dbx原始碼除錯工具快速上手

2021-04-02 08:12:21 字數 4071 閱讀 4945

dbx

是unix

下普遍的原始碼除錯工具

, 掌握好了

dbx的使用

,無疑象增添了泥在

unix

下程式設計的一把利器

查詢了一下整個

unix

板精華區

,都沒有發現有

dbx的介紹文件

, 大概各位大俠都對這個土土的東東都不願浪費筆墨巴

研究了一下午

dbx的連機文件,發現

dbx很是簡單易用

現在簡單介紹一下

dbx的使用方法

,讓更多的朋友免去獨自研究的苦楚

dbx主要用來除錯用

f77或

cc等編譯工具生成的

fortran和c

語言的源**

當然該程式必須在除錯過程中用

-g引數包含入除錯資訊

,比方說

我在unix

下編寫了乙個

hello.c

的程式: 

void hello(); 

main 

void hello()  先用

cc -o helloexe -g hello.c

編譯生成帶除錯資訊的

helloexe

檔案然後用

dbx helloexe

來除錯該檔案

顯示dbx)

這個dbx

下除錯的提示符

現在泥還不處在除錯狀態下

,需要首先進入除錯狀態

, 這樣泥需要先確定從**開始第一次中斷

,以便以後的跟蹤除錯

這裡從第

7行開始除錯

,用命令

: dbx)stop at 7 

設定好斷點後就開始執行

; dbx)run 

這時程式執行到第

7行停止下來

, 並顯示下一行將要執行的程式

7: i=i+1 這時,

泥可以用

: dbx)print i

命令來檢視

i變數的值

顯示1 

或者用printf "%d",i

來顯示用

c語言格式的輸出

對以後比較負責的陣列什麼的,用

dbx)duel i

方式可能更加顯示的方便

以後泥可以用

dbx)step

或者step ==trace into 

dbx)next

來執行下一行程式

,next=trace over 

用dbx)cont

命令可以直接執行到結束

, 其中控制命令多多

,功能十分強大的

. 檢視原始碼可以用

dbx)list begin,end 

就顯示hello.c

檔案中從

begin

到end

行的所有程式

,並且配上了行號

用dbx)file 

可以改變泥要檢視的原始碼檔名稱

. enjor it! 

下面是檢視了

dbx的

man手冊後對一些常用

/使用命令的中文說明

這些命令對普通的除錯已經足夠了

,一些多執行緒的除錯命令就不加以介紹了

dbx使用指南

: 1:

實用命令

quit/q    

退出q    

退出run arg1 arg2 ...  

用引數執行現有程序

r    

用上次的引數再次執行

stop at 

在第line

行設斷點

stop at 

在過程proc

被呼叫處設斷點

cont 

繼續執行到記號

(斷點或其他)處

return     

執行完目前的程序返回

print ...   

列印表示式的值

printf "string",exp,...  用c

語言的格式列印結果

where    

列印當前除錯狀態

,包括當前程序等資訊

func 

看當前執行程序名

/移動到呼叫

proc

程序的母程序處

file 

檢視的檔案切換到

file

檔案處list ,

從file

檔案中列出從

exp1

行到exp2

行list :

列出file

檔案中從

exp行開始的

int行

whatis 

顯示變數的型別

sh    

嶄時進入

sh狀態

sh 執行一

shell

命令2:

常用命令說明

alias name "string"  

把string

內容定義為一縮略語

name 

help section   

尋找某指令的幫助

playback input 

從file

中調入除錯命令流

playback output 

輸出file

中的除錯命令流

record input 

把除錯過程輸出到

file

中record output 

把命令的執行輸出儲存到

file

中history    

顯示歷史命令

hed    

編輯歷史除錯命令

!執行歷史命令流中第

int個命令

!-執行歷史命令中倒數第

int個命令

!執行歷史命令流中以

string

打頭的命令

!!    

重複上乙個命令

command;command ...  

多除錯命令間用

";"隔開

step 

向前追蹤步,

進入執行緒

next 

向前追蹤步,

不進入執行緒

delete all   

清所有斷點

listobj    

列出目前使用的

obj單元

listregions   

列出被用到的記憶體區

enable /disable 恢復/

禁用號斷點

catch    

顯示所有碰到的記號

cont at 

執行直到

line

行intercept all   

在所有例外處都中斷

bx chat    

在所有出現

char

打頭的異常處中斷

kill 

殺死pid

執行緒goto 

從line

行開始執行

stop 

當var

產生變化時中斷

stop 

當進入proc

程序時中斷

stop [var] [at ] if 

條件中斷

trace 

當var

變化時輸出其原值和新值

trace 

當進入程序時列印出母程序和引數

when if  

當條件為真時執行命令列

when at [if ]  

在遇到line

行時如果條件為真執行命令列

duel 

一種比較好的變數輸出方式

printregs   

輸出所有暫存器的值

status    

當前狀態

/向下尋找

file

中的string

字串?

向上尋找

file

中的string

字串set    

設定或顯示系統引數值

dbx是unix下普遍的原始碼除錯工具

掌握好了dbx的使用,無疑象增添了unix下程式設計的一把利器 研究了一下午dbx的連機文件,發現dbx很是簡單易用 現在簡單介紹一下dbx的使用方法,讓更多的朋友免去獨自研究的苦楚 dbx主要用來除錯用f77或cc等編譯工具生成的fortran和c語言的源 當然該程式必須在除錯過程中用 g引數包含...

Unix除錯工具dbx使用方法

dbx 可執行檔名 可執行檔案在編譯的時候必須代上 g 引數 dbx list 從檔案開頭列出 dbx listn 列出第 n行 dbx listm,n 列出從 m行開始的 n行 dbx run 執行不帶引數的程式 dbx runarg1 argn 執行帶引數的程式 該命令相當於 vc的快捷鍵 f5...

根據除錯工具看Vue原始碼之元件通訊(一)

在平時的業務開發中,相信在座的各位沒少用過元件通訊。然而,對於一些新手 業務熟手來說,不懂技術原理往往知其然而不知其所以然,用得一臉懵逼。看完本文可以幫助你了解vue元件的通訊方式及原理,從而進一步加深對vue的理解,遠離cv工程師的行列。示例 父元件 alt vue logo src assets...