日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

unix下sdb命令詳解( 四 )


* FunctionName:6a
將使得sdb在函數(shù)FunctionName中的第6行每次被執(zhí)行時都將其顯示出來 。
5.函數(shù)調(diào)用
sdb能夠調(diào)用程序中用戶自定義的任何函數(shù) 。這種功能對于下面兩種情況可能比較有用:
在需要用各種不同的參數(shù)對函數(shù)進行測試 。
用用戶自己定義的一個函數(shù)來顯示程序中的某些數(shù)據(jù) 。
不論是何種情況,我們均可以用如下命令來進行函數(shù)調(diào)用:
* FunctionName(Arg1,Arg2,....)

* FunctionName(Arg1,Arg2,....)/m
在第一種用法下,sdb只是簡單地執(zhí)行指定的函數(shù) 。在第二種用法下,sdb將在執(zhí)行指定的函數(shù)之后顯示返回值 。此值一般將按十進制方式顯示,除非指定了另外的顯示格式 。
提供給函數(shù)的參數(shù)可以是寄存器名、整數(shù)、浮點數(shù)、字符、字符串常量或是其他局部當前函數(shù),或者是當前函數(shù)可以訪問的變量 。
6.變量的監(jiān)視
sdb提供了一種被成為“觀察點”(Watch)的機制 。借此機制,我們可以監(jiān)視變量值得變化或某些地址的內(nèi)容的變化 。例如:
* i $m
可用于設置對某個變量的觀察點 。此處變量i為被監(jiān)視的變量 。而用:
* 0x00400000:m
則可將地址0x00400000 處設置成觀察點,而0x00400000將成為被監(jiān)視的地址 。
在設置了觀察點之后,sdb會同處理S命令一樣開始程序的單步執(zhí)行,并在變量的值或指定地址單元的內(nèi)容被改變時停止程序的執(zhí)行 。由于變量值的改變或地址內(nèi)容的變化,或者其他什么原因而使程序的執(zhí)行中止,包括因為遇到斷點而使程序停止的情形,都將使得所設置的觀察點被sdb自動刪掉 。
被觀察的變量必須是當前函數(shù)的局部變量或者是當前函數(shù)所能夠訪問的變量
其他命令
除了上面介紹的五類主要命令之外,sdb還支持其他一些命令 。使用這些命令,可以完成其他一些輔助性的工作 。分別介紹如下 。
. !Shell Command
此命令可以使sdb去執(zhí)行指定的Shell Command 。這里Shell Command是一個合法命令 。例如可以輸入:
* ! ls -l
sdb將執(zhí)行指定的ls -l 命令,并將其輸出顯示出來 。
使用:
* ! sh
能夠生成一個新的Shell進程 。在此新的Shell中可以完成某些工作,然后用exit命令返回到sdb中 。
指示sdb從文件FileName中讀取sdb調(diào)試命令,并且逐個執(zhí)行之 。
"SomeString
指示sdb顯示出某個字符串 。常用此命令給出某些提示信息,
k
此命令將使當前對程序的調(diào)試終止,之后仍可用r命令重新啟動被調(diào)試的程序 。如:
* k
1111:killed
*
這里1111是被調(diào)試進程的進程號 。
* q
此命令將使sdb停止其自身的運行而返回至原Shell提示符下 。在調(diào)試完程序之后一般都要使用此命令 。UNIX系統(tǒng)開發(fā)-sdb命令使用:源程序的顯示和搜索
sdb命令的使用
同我們前面介紹過的mail,ftp一類工具類似,sdb也是一個命令解釋程序 。也就是說,用戶在sdb提示符(一個星號*)下輸入sdb能夠識別的命令,sdb將根據(jù)被調(diào)試的程序的具體情況給出響應 。
例如,在運行myprog出錯,生成core文件之后進入sdb時,sdb將給出如下的響應:
$ sdb myprog
12: return ((100/atoi(ValueInput))? TESTOK:! TESTOK);
*
sdb給出來的實際上是程序出錯所在的函數(shù),在源程序文件中的行號以及出錯那一行的語句 。
在sdb的使用中要注意三個“當前”概念:
(1)當前文件 即當前將要被執(zhí)行的語句所在的那個源程序文件
(2)當前函數(shù) 即當前將要被執(zhí)行的語句所在的那個函數(shù)
(3)當前行 這個概念只有在編譯時加入-g選項才會有,它指的是將要被執(zhí)行的那條語句 。與當前行相應,有一個行號的概念 。它指的是每條語句在程序中位于第幾行 。注意行號是從文件頭開始計算的,第一行的行號為1,空白行和注釋也包括在內(nèi) 。

推薦閱讀