2010-12-06 70 views
14

我可以與gdb一起工作,但每次我想要查看源代碼中的位置時,都必須提供「list」命令。如何讓GDB在每一步之後做一個'列表'?

(gdb) next 
351  int right = get_variable(right_token, right_id); 
(gdb) list 
346   op = "<>"; 
347   right_id = parse_id_or_crash(); 
348  } 
349  Token * right_token = tokens[parser_index - 1]; 
350  int left = get_variable(left_token, left_id); 
351  int right = get_variable(right_token, right_id); 
352  if (op == "<") 
353   return left < right; 
354  if (op == ">") 
355   return left > right; 

如果在每一步之後gdb都會自動列出源代碼,那將會很好。如果gdb可以指出我在源代碼中的位置(比如用「 - >」或其他東西),那也很棒。一次只看到一行代碼會讓我有點幽閉恐懼症。

回答

6

您可以使用GDB宏這樣的:

(gdb) def n 
Type commands for definition of "n". 
End with a line saying just "end". 
>next 
>list 
>end 

如果你想在當前行的箭頭指向,你可能會考慮使用GDB前端,而不是(在Emacs如M-x gdb)。

2

hook-stop

define hook-stop 
    l 
end 

文檔:https://sourceware.org/gdb/current/onlinedocs/gdb/Hooks.html

此外,僞命令,「停止」存在。定義('hook-stop')會在程序每次執行停止時執行關聯的命令:在運行斷點命令之前,打印顯示或打印堆棧幀。 https://stackoverflow.com/a/8374474/895245

高亮顯示當前行

這是缺少完全徹底取代馬車-tui模式的唯一的事情:

從得知。

這是目前不可能沒有Python腳本:https://sourceware.org/bugzilla/show_bug.cgi?id=21044

有了Python腳本,我目前使用:https://github.com/cyrus-and/gdb-dashboard

參見:How to highlight and color gdb output during interactive debugging?

相關問題