我用C編寫了一個shell。在它上運行一些程序時出現了一些問題。如何在gdb中調試shell時在shell上運行程序?正在運行另一個程序的調試程序
回答
首先使用-g
選項來編譯調試標誌,用於gdb
。
然後運行。
gdb shellapp
...
run someapps
...
對於快速閱讀How to Debug C Program using gdb in 6 Simple Steps和GDB Tutorial
它需要編譯程序使用'-g' –
嗨Grijesh,感謝編輯;) –
:)你的歡迎。 –
您可以通過gdb附加到已經從另一個控制檯運行的shell進程。這樣你的shell輸出不會干擾gdb輸出,並且你可以照常在shell中運行程序。
- 運行你的shell執行在第1控制檯窗口
- 打開第二個控制檯,找到使用
ps
命令 開始
gdb
在第二個控制檯和attach殼已經運行殼的PID號使用它就像PID號這樣的::〜$ GDB -q
(GDB)連接3479
附加到進程3479現在你可以設置斷點,並繼續shell執行:
(GDB)b SomeFunction
(GDB)C
繼續。
從這一點來說,你有2個控制檯:
- 的一個地方你的shell運行
- 和第二地方
gdb
運行安裝到外殼
您可以使用shell像往常一樣:在其上運行其他程序或執行其他任何操作。同時您可以在gdb
內的第二個控制檯中觀察shell執行情況。重點是這兩個進程的輸出是相互分離的,如果你只在一個控制檯中直接在gdb中運行shell,那麼這是不可能的。
- 1. 「正在調試的程序未運行。」
- 2. 調用另一個程序在我的IDL程序中運行
- 3. 調試器錯誤:正在調試的程序未運行
- 4. 編寫一個程序來運行另一個書面程序
- 5. 從另一個程序或終端中斷正在運行的C++程序
- 6. 讀取另一個正在運行的.NET程序的屬性
- 7. 在另一個程序中運行程序?
- 8. 在另一個程序中運行UNIX程序
- 9. 如何運行一個程序,如果另一個程序正在運行c#或.bat
- 10. 運行另一個C++程序的C++程序
- 11. Java:最後運行另一個程序
- 12. 使用Python運行另一個程序
- 13. mysql調用另一個程序(另一個模式)從程序
- 14. BAT關閉程序,如果另一個正在運行
- 15. 如何編寫一個C程序,該程序在被調用時運行另一個給定的程序並試圖控制子進程的行爲
- 16. 如何在Linux中調試正在運行的C++程序?
- 17. 在另一個程序中調用一個程序
- 18. 程序調試時運行正常,但運行通常
- 19. 獲取I /從另一個java程序運行Java程序Ø
- 20. 從另一個java程序運行RMI程序
- 21. 從另一個程序集運行WPF應用程序
- 22. 運行Java程序到另一個程序
- 23. 如何從另一個java程序運行java程序?
- 24. 從另一個程序運行外部程序Linux或cygwin
- 25. 從C#安裝程序安裝程序運行另一個MSI
- 26. 從另一個Java程序運行java程序
- 27. 如何從C++程序運行另一個程序
- 28. 無法從另一個Java程序運行java程序
- 29. 運行不是我正在調試的應用程序?
- 30. Xcode「正在調試的程序未運行」錯誤
在這裏發表問題之前,應該做一些努力。 –