gdb attach 進程調試

gdb調試正在運行的進程:linux

GDB能夠對正在執行的程序進行調度,它容許開發人員中斷程序 並查看其狀態,以後還能讓這個程序正常地繼續執行windows

(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命令斷開鏈接,讓被調試的進程能夠繼續正常運行。ide


咱們能夠經過  1)  gdb prog_name -> r               用在逐步調試本身的程序時函數

                    2)  gdb -> attach process_id       正在運行中的後臺程序忽然卡在了某個地方,先ps再gdb/attach工具

                    3)  gdb prog_name core              程序core掉了ui

三種方式對一個程序進行調試;spa

 

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

相關文章
相關標籤/搜索