2009-09-13 72 views
2

有沒有辦法通過顯示當前當前行的方式來查看C代碼「實時」?顯示正在執行的C代碼的當前行

可以八九不離十使用GDB,但我不知道是否有什麼比拿着返回鍵略有下降,更優雅:

$ gdb ./mycode 
(gdb) break 1 
Breakpoint 1 at 0x100000f08: file mycode.c, line 1. 
(gdb) run 
Starting program: mycode 

Breakpoint 1, main() at mycode.c:4 
4  for(x = 0; x < 4; x++){ 
(gdb) next 
5   printf("Example\n"); 
(gdb) [press return] 
Example 
4  for(x = 0; x < 4; x++){ 
(gdb) [press return] 

性能是不是一個問題(這顯然將放緩在所有的printf()'下降很多,這很好)。理想情況下,解決方案將是一個命令行工具(或者一個OS X兼容的GUI應用程序)

也許用法是沿着線..

$ viewlivec --delay 500 -- ./mycode -mycodes=arg --verbose 
01: int main(){ 
02: int x; 
03: for(x = 0; x < 4; x++){ 
04: printf("Example\n"); 
05: } 
03: for(x = 0; x < 4; x++){ 
04: printf("Example\n"); 
05: } 
03: for(x = 0; x < 4; x++){ 
04: printf("Example\n"); 
05: } 
03: for(x = 0; x < 4; x++){ 
04: printf("Example\n"); 
05: } 
06: } 

--delay該標誌將等待每一行之間0.5秒

(這可能先前已經被問過,但我真的不知道該怎麼尋找,因此找不到任何東西)

回答

0

我從來沒有見過或聽說過這樣的工具,但是我懷疑因爲GDB是如此mbeddable,它必須有一個體面的API,你可以用它來製作這個應用程序(如果你這樣做,我想要一個副本!)。

1

我不知道這個任何工具,但如果你要自己寫這個,你可能想看看修改/創建一個代碼覆蓋實用程序的鉤子。例如,gcovlcov都計算一條線的執行次數,所以當然你可以修改源來打印出該線和睡眠,而不是隻增加一個計數器。

1

鑑於NormD的評論,以this answer,我不知道像這樣的特徵是否可能的CodeWarrior或變色龍的一個特徵。

+0

+1幽默感...... – Vargas 2009-09-13 22:19:58

2

你想要DDD,這是一個GDB的GUI。 另外:WinDBG是好的,如果你正在運行Windows。

+0

+1:一個非常有用的工具。 – Atmocreations 2009-09-13 22:49:17

相關問題