dbx(SUN studio)調試工具:在利用 dbx 對程序進行源代碼級調試前,必須使用 -g 選項
啟動:dbx program_name加載要調試的程序,調試JAVA程序dbx program_name.class|.jar,可以指定進程ID來連接正在運行的進程進行調試。
也可以在dbx運行時加載調試程序:(dbx)debug program_name
運行調試程序:run [運行參數]
查看core文件:可以dbx program_name core,或者dbx - core,再使用where命令顯示棧跟蹤,找到崩潰位置
設置斷點:stop in 函數;stop at file:line ; 也可以先通過file file-name設置當前文件,list function查看源文件,確定要設置斷點的行數。在C++中可以將關鍵字(inmember、inclass、infunction 或 inobject)在類,成員函數,對象中設置斷點。stop change variable可設置當變量改變時停止。條件停止斷點:stop cond condition。另外在動態庫中可以在動態共享庫的函數中以在程序啟動時在鏈接的庫中設置斷點的同樣方式來設置斷點。
列出所有斷點:status
刪除斷點:delete 斷點號
單步執行:step、next,step 命令步入函數,而 next 命令步過函數。step up將一直執行,直至當前函數將控制返回調用它的函數為止。
繼續執行:cont
查看調用棧:where 調用棧代表那些已被調用但尚未返回各自調用程序的所有當前活動例程。在棧中,函數及其參數按調用的順序進行存放。棧跟蹤顯示程序流執行的停止位置以及執行如何到達此點。它提供程序狀態的簡明描述。
檢查變量:print 變量名
退出:quit
連接已運行的進程:attach pid
分離已連接的進程:detach pid
查找符號:whereis symbol 打印指定符號所有具體值的列表
要打印輸出標識符的聲明whatis
對子進程使用運行時檢查,可通過attach 子進程ID連接到子進程進行調試。
要顯示當前進程的所有線程信息:執行thread,切換到指定線程:thread thr_id
信號處理:
cont -sig signal將信號轉發到進程;catch顯示當前正在捕獲的信號列表;ignore顯示程序忽略信號列表
shell方式切換:sh