我想跟蹤由gcc編譯的應用程序。通過跟蹤,我的意思是我想要查看每條執行指令的地址。什麼是最簡單的方法來實現這一點?由gcc編譯的跟蹤應用程序
回答
當然,最好的選擇是使用GDB。
編譯代碼:
$ gcc -Wall m.c -o m
使用gdb跟蹤它:
$ gdb m
> b main
> r
GDB會打破你的入口函數:main
。
這怎麼能通過使用GDB來實現。我希望在執行結束時看到跟蹤。腳步? – MetallicPriest
但strace用於跟蹤系統調用,對吧?不用於跟蹤每條指令。 – MetallicPriest
@MetallicPriest:用dtrace你甚至可以跟蹤指令。但我不明白爲什麼** GDB **不夠好,無法跟蹤指令。你想存儲跟蹤文件或東西?看看http://en.wikipedia.org/wiki/DTrace –
用gdb,你可以打開日誌記錄:
set logging file my_log_filename.log
set logging on
和寫一個遞歸步驟的宏:
define s
stepi
s
end
使用ptrace的,只是ptrace(PTRACE_SINGLESTEP...)
直到tracee結束或獲取的信號。
我想你可以試試這個
strace的-i程序名
注:這將只打印系統調用從所需的程序調用。
- 1. 由Flex Builder 3編譯的應用程序不會跟蹤
- 2. Android編程ABC跟蹤應用程序
- 3. 跟蹤Web應用程序
- 4. 跟蹤應用程序
- 5. Django跟蹤應用程序?
- 6. ASP.NET應用程序 - 跟蹤
- 7. 把應用程序跟蹤
- 8. 使用avr-gcc編譯彙編程序
- 9. 錯誤的堆棧跟蹤與GCC +預編譯頭
- 10. GCC不編譯程序
- 11. 跟蹤使用的應用程序
- 12. 使用USB跟蹤跟蹤Android應用程序
- 13. 使用Adobe Flex 3編譯時如何跟蹤應用程序版本?
- 14. 跟蹤Android應用程序的卸載
- 15. iOS中的GPS跟蹤應用程序
- 16. 跟蹤應用程序的HTTP請求
- 17. 爲什麼由GCC編譯的應用程序總是包含_mcount符號?
- 18. 使用gcc編譯C++程序
- 19. GCC如何編譯引用靜態庫的應用程序
- 20. 應用程序內存使用跟蹤
- 21. 用戶跟蹤應用程序被
- 22. 如何跟蹤iPhone應用程序的應用程序活動
- 23. 跟蹤應用程序打開,由於推
- 24. 由Visual Studio 2008調試CygWin gcc編譯的程序
- 25. 跟蹤路由 - 序言
- 26. 使用gcc編譯應用程序,它與使用不同gcc版本編譯的庫不同gigcc
- 27. 編譯基於DocxFactory的應用程序與gcc
- 28. 功能手機跟蹤應用程序
- 29. 跟蹤電子應用程序卸載
- 30. 點擊跟蹤Windows應用程序
我現在已經用ptrace製作了我自己的解決方案。很簡單。 – MetallicPriest