除了gcc,我可以在Linux中使用哪個程序進行除錯?我在Ubuntu 12.04上使用vi,gcc。儘管gcc給出了一些排除選項的方法,但仍然有任何程序可以給我一個詳細的解釋,即關於堆棧空間,指針位置等。除了gcc,我可以在Linux中使用哪個程序進行拆線?
1
A
回答
4
首先,我假定你的意思gdb
,不gcc
(這是編譯器)。
這是一個非常寬泛的問題,因爲您不會編寫GDB缺乏的功能。但是,在Linux中有很多調試器可用:
LDDB:LLVM調試器,與gdb非常相似。由Apple工具使用。如果您使用clang
編譯您的代碼,請使用此選項。
Valgrind:高級工具,用於分析內存使用,仿形性能,檢測常見的錯誤(線程問題等)
gperftools:谷歌的工具,性能分析器,堆檢查(檢測內存問題,如訪問數組超出其邊界),堆分析器
IDA:商業調試器和反彙編程序。調試您無法訪問源代碼的程序時很有用。
....和名單繼續。
2
正如幽默中的諷刺(諷刺?:p)評論,gcc
是編譯器,而不是調試器。 gcc
中的調試選項只是告訴編譯器生成調試符號以及程序的二進制輸出。
這樣,調試,像gdb
,能夠處理你的程序的調試會話。只需谷歌約gdb
,檢查手冊,測試它在簡單的程序,看看哪些功能是有趣的... ...和...玩得開心
更準確地說,調試器將無法跟蹤在下跌過程中的工作流程和它的內存狀態,如果你沒有指定調試選項編譯器(用於gcc
這是-g
)
0
相關問題
- 1. 哪個線程庫在linux上使用gcc來實現OpenMP?
- 2. 我可以找出使用Eclipse運行哪個線程嗎?
- 3. 我可以知道應用程序進入後臺時按了哪個鍵嗎?
- 4. 我可以暫停除一個線程之外的進程嗎?
- 5. 我可以知道哪個文件使用fsevent進行了更改嗎?
- 6. Linux上的gcc 4.8.2 - 使用線程崩潰的簡單程序
- 7. 我可以使商店更新可以在reactmox應用程序中進行嗎?
- 8. 我可以告訴哪個線程調用了我的服務方法嗎?
- 9. 在哪個線程中調用了終止處理程序?
- 10. 在Linux中進行調試期間可以停止單個線程嗎?
- 11. 我可以使用任何命令在Linux命令行中殺死某個進程的特定進程?
- 12. 如何在Linux上使用另一個libC進行編譯? (gcc)
- 13. 在Linux中執行線程程序
- 14. 我應該在Linux上使用哪個線程庫用於多線程C程序?
- 15. 我可以在運行時使用gcc替換printf的IO驅動程序嗎?
- 16. 可以在多線程中對Excel表進行排序嗎?
- 17. 我可以在Debian/Linux上安裝兩個GCC版本嗎?
- 18. 如何確定是哪個進程在Linux中使用
- 19. 我們可以在Docker中運行多進程程序嗎?
- 20. 我可以在Linux中使用winnt.h嗎?
- 21. 我應該使用哪個線程或進程?
- 22. 我怎麼能告訴Linux哪些進程發送了我的進程信號
- 23. 我可以在WinForms應用程序中使用哪個嚮導控件?
- 24. 我可以使用哪個其他事件處理程序?
- 25. 我可以在java中的線程中運行線程嗎?
- 26. 我可以確定哪個進程向我的窗口發送了消息嗎?
- 27. 兩個線程可以使用相同的線程程序嗎?
- 28. C++ Linux GCC應用程序中的GUID
- 29. 我在哪裏可以找到我的數據,我通過AWS Cognito進入了我的Android應用程序
- 30. 我可以使用fancybox進行在線表格聯繫嗎?
gdb是調試器 –
「我可以使用除我的機票之外的任何其他車輛嗎?我已經買了一張公共汽車票,但我仍然不在我的目的地。」 – 2013-10-26 16:55:31
@ H2CO3 - 我是否在該評論中檢測到一點挫敗感? :) – ryyker