日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

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

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

 

 

 

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

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

概述

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

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

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

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

在調(diào)試時測試和嘗試程序用來縮小或修復(fù)問題。

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

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

 

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

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

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

 

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

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

安裝

gdbgui的運(yùn)行依賴于Python 3,所以首先得有一個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)試一個簡單的C++程序,熟悉其功能。進(jìn)入到源代碼目錄:

cd examples/c

make

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

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

 

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

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

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

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

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

頂部工具欄

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

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

 

調(diào)試控制器:

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

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

 

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

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

使用gdbgui在瀏覽器中遠(yuǎn)程多語言調(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",美化動態(tài)變量顯示

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

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

"Add syntax highlighting to source files",對源文件語法高亮。

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

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

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

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

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

 

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

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

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

 

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

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

 

查看變量Tree

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

信息輸出框和gdb命令欄

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

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

 

結(jié)論

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

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

網(wǎng)友整理

注冊時間:

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

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

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

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

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

答題星2018-06-03

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

全階人生考試2018-06-03

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

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

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

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

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

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定