我有一個關於在Linux中調試正在運行的C++程序的問題。如果編程已經運行並且不能被中斷,那該怎麼做。如何在Linux中調試正在運行的C++程序?
我可以找到三種方式,但對細節我不太瞭解,如果有人能夠詳細闡述它,我很感激。
1),我們可以通過指定進程ID
gdb -p PID
在這種情況下使用GDB,這是什麼和attach PID
之間的區別?
2)我們可以使用PSTAT,但是,我使用Ubuntu,沒有PSTAT,但只有mpstat的
似乎mpstat的沒有提供太多的信息,也沒有那麼多的選擇。
3)檢查目錄下./proc
詳細信息,在這種情況下,只要到與PID的目錄。但是,這是否應該手動完成?
我不認爲我見過的'-p'選項。通過PID連接到一個進程是很常見的。究竟是什麼問題呢? – Cascabel 2010-03-18 03:16:20
我不確定你的問題真的是什麼。您似乎已經有調試C++程序的工作方法,因此您的標題是自我回答的,然後您的帖子主體會詢問不相關的內容。你能否改寫標題或問題更清楚? – ephemient 2010-03-18 03:33:27
我已經使用'strace -p PID'來跟蹤正在運行的C++應用程序的系統調用。我發現調用'open()'失敗,錯誤情況沒有得到適當的處理。 – jschmier 2010-03-18 04:02:28