您好,登錄后才能下訂單哦!
本篇文章為大家展示了怎樣進行gdb attach 進程調試,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
gdb調試正在運行的進程:
GDB可以對正在執行的程序進行調度,它允許開發人員中斷程序 并查看其狀態,之后還能讓這個程序正常地繼續執行
(gdb) attach xxxxx --- xxxxx為利用ps命令獲得的子進程process id
(gdb) stop --- 這點很重要,你需要先暫停那個子進程,然后設置一些斷點和一些Watch
(gdb) break 37 -- 在result = wib(value, div);這行設置一個斷點,可以使用list命令察看源代碼
Breakpoint 1 at 0x10808: file eg1.c, line 37.
(gdb) continue
Continuing.
Breakpoint 1, main () at eg1.c:37
37 result = wib(value, div);
(gdb) step
在完成調試之后,不要忘記用detach命令斷開連接,讓被調試的進程可以繼續正常運行。
我們可以通過 1) gdb prog_name -> r 用在逐步調試自己的程序時
2) gdb -> attach process_id 正在運行中的后臺程序突然卡在了某個地方,先ps再gdb/attach
3) gdb prog_name core 程序core掉了
三種方式對一個程序進行調試;
1. thread——gdb 多線程調試命令:
info threads: 顯示當前進程中的線程;
thread thread_no: 進入線程xx,通常緊接而來的是 bt/f 命令;
2. strace/ltrace:
前者關注系統調用和程序所接收的信號;后者關注庫函數調用;
strace的應用在 我們沒有程序的源碼,或者不方便從頭開始運行程序時;可以方便查看一個應用程序進行了哪些系統調用。
而在希望知道程序都調用了動態庫中的哪些函數時,我們使用 ltrace。ltrace有個-S選項,類似于strace功能。
3.檢查內存泄漏的工具:
valgrind (in linux, free)
visual leak detector (windows , free)
boundschecker(windows, free)
profile工具:
oprofile
vtune
上述內容就是怎樣進行gdb attach 進程調試,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。