2011-10-29 60 views

回答

2

當然,最好的選擇是使用GDB。

編譯代碼:

$ gcc -Wall m.c -o m 

使用gdb跟蹤它:

$ gdb m 
> b main 
> r 

GDB會打破你的入口函數:main

如果這種跟蹤是對你不好,可以嘗試使用strace在Linux或dtrace在Solaris,BSD或Mac OS X

+0

這怎麼能通過使用GDB來實現。我希望在執行結束時看到跟蹤。腳步? – MetallicPriest

+0

但strace用於跟蹤系統調用,對吧?不用於跟蹤每條指令。 – MetallicPriest

+0

@MetallicPriest:用dtrace你甚至可以跟蹤指令。但我不明白爲什麼** GDB **不夠好,無法跟蹤指令。你想存儲跟蹤文件或東西?看看http://en.wikipedia.org/wiki/DTrace –

0

用gdb,你可以打開日誌記錄:

set logging file my_log_filename.log 
set logging on 

和寫一個遞歸步驟的宏:

define s 
stepi 
s 
end 

使用ptrace的,只是ptrace(PTRACE_SINGLESTEP...)直到tracee結束或獲取的信號。

0

我想你可以試試這個

strace的-i程序名

注:這將只打印系統調用從所需的程序調用。