GDBFrontend:一款靈活可擴展的GUI調試工具

  • 2020 年 3 月 31 日
  • 筆記

今天給大家介紹的是一款名叫GDBFrontend的工具,這是一款GUI調試工具,該工具易於使用,並且靈活可擴展,廣大研究人員可以根據自己的需求來對GDBFrontend進行功能擴充。

工具安裝

Debian安裝(Debian / Ubuntu / KDE Neon)

如果你使用的是基於Debian發行版的作業系統平台,你可以使用Deb包來安裝GDBFrontend。

廣大用戶可以使用下列命令完成工具安裝:

echo "deb [trusted=yes]https://oguzhaneroglu.com/deb/./" | sudo tee -a /etc/apt/sources.list > /dev/null  sudo apt update  sudo apt install gdbfrontend

通過apt完成安裝後,我們還需要使用apt upgrade來完成新版本更新,獲取更新的命令如下:

sudo apt update  sudo apt upgrade gdbfrontend

接下來,我們就可以使用下列命令來運行GDBFrontend了:

gdbfrontend

GIT安裝

當然了,廣大研究人員也可以直接下載該項目的最新版本源碼,然後配置並運行GDBFrontend。

工具要求:

1、GDB => 8.2 (python3) 2、python3 3、tmux

此時,我們可以使用下列命令將項目源碼克隆至本地,然後安裝並使用GDBFrontend:

git clonehttps://github.com/rohanrhu/gdb-frontend.gitgdb-frontend  cd gdb-frontend  ./gdbfrontend

接下來,使用下列命令運行工具:

http://127.0.0.1:5551/terminal/

如果你不需要配合終端使用的話,可以運行下列命令:

http://127.0.0.1:5551/

我們還可以使用下列命令打開GBD Shell:

tmux a -t gdb-frontend

Flatpak

在新版本的GDBFrontend中,還會添加針對Flatpak包的支援。

./gdbfrontend

$ gdbfrontend --help  GDBFrontend is a easy, flexible and extensionable gui debugger.  Options:  --help, -h: 顯示幫助資訊  --version, -v: 顯示版本資訊  --gdb-executable=PATH, -g PATH: 指定GDB可執行文件路徑  --tmux-executable=PATH, -tmux PATH: 指定Tmux可執行文件路徑  --terminal-id=NAME, -t NAME: 指定tmux 終端識別符名稱  --verbose, -V: 啟用verbose 輸出

參數選項

--help, -h

顯示幫助資訊

--version, -v

顯示版本資訊

--gdb-executable=PATH, -g PATH

指定GDB可執行文件路徑,例如:gdbfrontend —gdb-executable=/path/to/gdb。(可選項)

--tmux-executable=PATH, -tmux PATH

指定Tmux可執行文件路徑,例如:gdbfrontend —tmux-executable=/path/to/tmux。(可選項)

--terminal-id=PATH, -t PATH

指定tmux 終端識別符名稱(ID),例如:gdbfrontend —terminal-id=terminal-name。(默認: gdb-frontend)

--verbose, -v

啟用verbose 輸出

錯誤解決

有的時候GDB和GDBFrontend可能會以非正常狀態關閉,此時我們可以使用下列命令終止gdb-frontend Shell:

tmux kill-session -t gdb-frontend

插件系統開發

插件樣本

下面給出的是一個插件樣本,可以在項目目錄plugins/hello中的hello文件中找到相關程式碼。

首先,我們需要找到config.py文件,然後取消下列程式碼的注釋:

disabled_plugins = ["hello"]

GDBFrontend的插件都存儲在plugins/目錄中,典型的插件文件結構如下:

plugins/hello/frontend/html/hello.htmljs/hello.jscss/hello.cssurl_modules/api.pyconfig.pyurls.pyhello.py

插件文件-config.py

一個插件文件應當包含的基礎資訊如下:

DESCRIPTION = "Example GDBFrontend plugin."AUTHOR = "Oğuzhan Eroğlu <[email protected]> (https://oguzhaneroglu.com/)"HOMEPAGE = "https://github.com/rohanrhu/gdb-frontend"VERSION = [0, 0, 1]

hello.py樣本程式碼:

import importlibimport plugingdb = importlib.import_module("gdb")class HelloPlugin(plugin.GDBFrontendPlugin):def __init__(self):plugin.GDBFrontendPlugin.__init__(self)def loaded(self):gdb.events.new_objfile.connect(self.gdb_on_new_objfile)def unloaded(self):gdb.events.new_objfile.disconnect(self.gdb_on_new_objfile)def gdb_on_new_objfile(self, event):print("[HELLO] Event: new_objfile:", event)

工具運行截圖

許可證協議

本項目的開發與發布遵循GNU General Public License v3 (GPL-3)開源許可證協議。

項目地址

GDBFrontend:【GitHub傳送門】

* 參考來源:rohanrhu,FB小編Alpha_h4ck編譯,轉載請註明來自FreeBuf.COM