我必須用gdb調試一個程序。該程序使用gcc的調試選項進行編譯。 我的問題是,源不是在我用來調試和運行這個程序的同一臺機器。我無法使用遠程gdb調試。在gdb中推進時是否有辦法現在行/文件位置?有沒有其他解決方案來解決這個問題?用gdb調試沒有源代碼
感謝
我必須用gdb調試一個程序。該程序使用gcc的調試選項進行編譯。 我的問題是,源不是在我用來調試和運行這個程序的同一臺機器。我無法使用遠程gdb調試。在gdb中推進時是否有辦法現在行/文件位置?有沒有其他解決方案來解決這個問題?用gdb調試沒有源代碼
感謝
我發現在gdb命令info line
這表明在源文件中的位置,即使GDB沒有找到源文件。這種解決方法對我來說似乎很好。
如果您遇到segmentation fault
,您可以通過啓用使用Linux機器上的核心轉儲它
的ulimit -c無限
那麼核心轉儲文件傳輸到另一臺機器,你已經獲得源代碼並運行gdb和coredump文件,以確定代碼中哪裏出現了分段錯誤。
您可以使用匯編代碼對其進行調試。
objdump -d
顯示所有內容。然後在main
函數中運行gdb
並使用中斷運行,ni
運行下一個指令(程序集)。哦,不要忘記啓用display $pc
會幫助你。
以上建議僅適用於玩具編碼。
如果您已經安裝了IDA(和插件),你可以使用它restore to C code
功能。
很明顯,沒有任何研究可以解決你自己的問題,只需要幾分鐘的時間就可以問這個問題! – cybermonkey 2014-10-20 11:02:31