亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

 

 

 

碼農(nóng)需要開(kāi)花大量時(shí)間調(diào)試和維護(hù)項(xiàng)目代碼。代碼調(diào)試是每個(gè)碼農(nóng)的最基礎(chǔ)技能之一。大多數(shù)人都喜歡IDE給你帶來(lái)的便利的可視化調(diào)試體驗(yàn),少數(shù)人則喜歡GDB式命令行的高效調(diào)試,那么有沒(méi)有什么方法能把兩者結(jié)合起來(lái)呢?

在本文中,蟲蟲要給大家介紹一個(gè)這樣的工具gdbgui,是gdb的一個(gè)Web可視化擴(kuò)展,可以讓我們通過(guò)Web在線可視化的調(diào)試。

概述

GDB是GNU項(xiàng)目推出的強(qiáng)大開(kāi)發(fā)調(diào)試?yán)鳎С挚缙脚_(tái)操,跨語(yǔ)言的軟件調(diào)試。GDB和GCC、Emacs構(gòu)成了GUN編程的宇宙最強(qiáng)組合。目前GDB可用于調(diào)試諸如C,C++,Golang,Rust等編譯語(yǔ)言,和Mac,windows,linux和BSD等幾乎所有的操作系統(tǒng)。GDB可以幫助我們:

發(fā)生錯(cuò)誤時(shí)捕獲程序變量和上下文的概況;

如果由于崩潰或異常終止而引起core dump,可以找到什么表達(dá)式引起的;

在程序運(yùn)行時(shí)暫停問(wèn)題的程序部分;

在調(diào)試時(shí)測(cè)試和嘗試程序用來(lái)縮小或修復(fù)問(wèn)題。

GDB常用的功能可總結(jié)如下:

使用gdbgui在瀏覽器中遠(yuǎn)程多語(yǔ)言調(diào)試

 

盡管GDB很強(qiáng)大也很高效,但是需要在命令行下使用,對(duì)不熟悉命令行的人有些事不是很方便。

gdbgui是另一個(gè)基于gdb構(gòu)建的調(diào)試工具。主要區(qū)別在于gdbgui向開(kāi)發(fā)人員提供Web展示前端,因此可以在瀏覽器中實(shí)現(xiàn)斷點(diǎn)添加,堆棧查看跟蹤以及更改上下文和參數(shù)值等操作。

使用gdbgui在瀏覽器中遠(yuǎn)程多語(yǔ)言調(diào)試

 

gdbgui體系結(jié)構(gòu)

ddbgui庫(kù)利用了WebSockets的優(yōu)勢(shì)。每當(dāng)前端調(diào)試工具啟動(dòng)時(shí),都會(huì)建立WebSocket連接,用于瀏覽器與后端之間的通信通道。在每個(gè)已建立的WebSocket之后,后端都會(huì)啟動(dòng)一個(gè)新的托管gdb子進(jìn)程以解析輸出,同時(shí)生成一個(gè)單獨(dú)的子進(jìn)程以不斷檢查其他子進(jìn)程的輸出。最后,它使用相同的WebSocket將輸出傳輸?shù)娇蛻舳恕?/p>

安裝

gdbgui的運(yùn)行依賴于Python 3,所以首先得有一個(gè)Python 3環(huán)境,然后可以用pipx安裝 。

首先,安裝pipx

python3 -m pip install --user pipx

在用戶路徑添加新的路徑

python3 -m userpath Append ~/.local/bin

最后,安裝gdbgui

pipx install gdbgui

使用gdbgui進(jìn)行調(diào)試

使用gdbgui調(diào)試一個(gè)簡(jiǎn)單的C++程序,熟悉其功能。進(jìn)入到源代碼目錄:

cd examples/c

make

運(yùn)行這些命令后,調(diào)試器會(huì)在瀏覽器中彈出打開(kāi)。

使用gdbgui在瀏覽器中遠(yuǎn)程多語(yǔ)言調(diào)試

 

這樣會(huì)在本地瀏覽器打開(kāi),也可以通過(guò)執(zhí)行g(shù)dbgui啟動(dòng)一個(gè)gdbgui實(shí)例,默認(rèn)是監(jiān)聽(tīng)127.0.0.1的本地5000端口。可以通過(guò)--port指定監(jiān)聽(tīng)端口,通過(guò)-r指定監(jiān)聽(tīng)0.0.0.0 這樣就可以遠(yuǎn)程用IP:port訪問(wèn)了(注意安全)。

gdbgui調(diào)試界面詳解

gdbgui的web界面有很多部件,包括頂部Load Binary條,右上角的調(diào)試控制器工具條、設(shè)置按鈕和信息菜單;

頁(yè)面中間是調(diào)試內(nèi)容頁(yè)分左中右三塊,分別為文件樹,代碼區(qū)和右邊的調(diào)試信息窗口。

頁(yè)面的底部是信息輸出和最下面的DGB命令工具。

頂部工具欄

執(zhí)行文件加載:gdbgui的web界面有很多選項(xiàng)。在頁(yè)面頂部,看到一個(gè)名為L(zhǎng)oad Binary的部分,可用于加載程序二進(jìn)制文件(具有g(shù)dbgui運(yùn)行所在的相對(duì)路徑),可以給它傳遞參數(shù)。請(qǐng)注意,這兒僅接受可執(zhí)行文件。

使用gdbgui在瀏覽器中遠(yuǎn)程多語(yǔ)言調(diào)試

 

調(diào)試控制器:

在頁(yè)面的右側(cè),是gdbgui的控制器部分,控制器將允許開(kāi)發(fā)人員控制調(diào)試的一些流程:比如從頭開(kāi)始重新啟動(dòng)程序跳到下一個(gè)斷點(diǎn)步進(jìn)(循環(huán)單步模式)退出函數(shù)退出到一個(gè)功能調(diào)用。所有控件也支持鍵盤快捷鍵。

使用gdbgui在瀏覽器中遠(yuǎn)程多語(yǔ)言調(diào)試

 

系統(tǒng)設(shè)置

可以通過(guò)單擊頁(yè)面右上方的齒輪圖標(biāo)來(lái)瀏覽調(diào)試器的設(shè)置部分。設(shè)置項(xiàng)的信息都很明確,不過(guò)需要懂英文。

使用gdbgui在瀏覽器中遠(yuǎn)程多語(yǔ)言調(diào)試

 

"Add breakpoint to main after loading executable",加載可執(zhí)行文件后給main函數(shù)添加斷點(diǎn)。

"Maximum number of source file lines to display":源文件顯示最大行數(shù),設(shè)置數(shù)字。

"Pretty print dynamic variables (requires restart",美化動(dòng)態(tài)變量顯示

"Refresh all components when a command is sent from the console",向終端發(fā)送命令時(shí)刷新組件,可以在每個(gè)命令之后刷新所有視覺(jué)視圖(例如輸入n下一行執(zhí)行內(nèi)容)。

"Print all sent commands in console, including those sent automatically by gdbgui",在控制臺(tái)中打印所有命令的這個(gè)復(fù)選項(xiàng),選中后選就可以在信息輸出框顯示運(yùn)行的所有命令,還會(huì)顯示gdbgui調(diào)試時(shí)候在后臺(tái)運(yùn)行的所有命令。在大多數(shù)情況下,最好取消選中此選項(xiàng),因?yàn)樗鼤?huì)使終端控制臺(tái)輸出比較雜亂不好讀取。

"Add syntax highlighting to source files",對(duì)源文件語(yǔ)法高亮。

還可以設(shè)置調(diào)試器的主題(比如碼農(nóng)們喜歡的深色模式monokai)。

調(diào)試內(nèi)容頁(yè)

加載可執(zhí)行文件時(shí),會(huì)在頁(yè)面中間看到帶有已應(yīng)用斷點(diǎn)的源代碼。此外,還有一個(gè)下拉部分,其中顯示了用于編譯可執(zhí)行文件的所有源文件的列表。

一般無(wú)需通過(guò)下拉菜單中指定源文件,但是對(duì)于一些語(yǔ)言比如Rust和Golang需要從文件樹指定mail函數(shù)所在文件。

使用gdbgui在瀏覽器中遠(yuǎn)程多語(yǔ)言調(diào)試

 

在最右側(cè)面板是最重要調(diào)試信息面板。

調(diào)用堆棧和局部變量:顯示了在某個(gè)斷點(diǎn)上的位置(文件和指令地址,這是指向斷點(diǎn)的代碼中的指針)。還可以探索與被攻擊的斷點(diǎn)有關(guān)的局部變量。通過(guò)單擊此處的語(yǔ)言環(huán)境,都可以看到詳細(xì)的樹狀視圖,該視圖可以以可視格式顯示變量之間的復(fù)雜關(guān)系。

使用gdbgui在瀏覽器中遠(yuǎn)程多語(yǔ)言調(diào)試

 

下面接著是一個(gè)表達(dá)式部分,可以在程序的整個(gè)程序生命周期中持續(xù)觀察某個(gè)值。對(duì)于預(yù)期在程序的不同序列中發(fā)生變化的變量,這將很有用。

使用gdbgui在瀏覽器中遠(yuǎn)程多語(yǔ)言調(diào)試

 

查看變量Tree

使用gdbgui在瀏覽器中遠(yuǎn)程多語(yǔ)言調(diào)試

 

調(diào)試器的一個(gè)很酷的功能是它將內(nèi)存地址轉(zhuǎn)換成超鏈接,因此可以單擊這些內(nèi)存變量。然后可以在下面的內(nèi)存框中查看它所指的字符。

使用gdbgui在瀏覽器中遠(yuǎn)程多語(yǔ)言調(diào)試

 

調(diào)試器還有一個(gè)獨(dú)特的變量可視功能是可以根據(jù)時(shí)間監(jiān)視圖表上某些變量的值。

使用gdbgui在瀏覽器中遠(yuǎn)程多語(yǔ)言調(diào)試

 

如果單擊表達(dá)式部分中的圖表圖標(biāo),就可以顯示帶有X和Y線的圖形。如果表達(dá)式的值在調(diào)試器的運(yùn)行時(shí)中發(fā)生變化,則可以在圖形上直觀地看到此變化。

使用gdbgui在瀏覽器中遠(yuǎn)程多語(yǔ)言調(diào)試

 

接著下邊則是斷點(diǎn)信息框,信號(hào)框和寄存器信息框

使用gdbgui在瀏覽器中遠(yuǎn)程多語(yǔ)言調(diào)試

 

我們可以可以很清晰的查看設(shè)置的斷點(diǎn)位置、斷點(diǎn)對(duì)應(yīng)的代碼信息,寄存器信息也顯示很詳細(xì)。

信息輸出框和gdb命令欄

頁(yè)面底部是信息輸出框和gdb命令輸出部分。支持在此處輸出gdb的命令行指令,熟悉gdb命令的同學(xué)也可以大顯身手。

使用gdbgui在瀏覽器中遠(yuǎn)程多語(yǔ)言調(diào)試

 

結(jié)論

本文蟲蟲給大家介紹了一個(gè)GDB的web插件gdbgui,通過(guò)該插件可以實(shí)現(xiàn)通過(guò)Web瀏覽器進(jìn)行程序調(diào)試。同時(shí)支持遠(yuǎn)程進(jìn)行調(diào)試,調(diào)試界面優(yōu)美,功能強(qiáng)大,就算是有好用的IDE,該工具也值得大家去嘗試一下。

分享到:
標(biāo)簽:瀏覽器
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定