开发者

How to get GDB to do a 'list' after every step?

I can step along with gdb, but I have to give the "list" command every time I want to see where I am in source code.

(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    开发者_如何学C if (op == ">")
355         return left > right;

It would be great if gdb would automatically list the source code after every step. It would also be great if gdb could indicate where in the source code I am (like with a "->" or something). Seeing only one line of code at a time makes me a little claustrophobic.


Use gdb TUI mode http://sourceware.org/gdb/onlinedocs/gdb/TUI-Overview.html#TUI-Overview You can enter or leave the TUI mode with C-x A key binding.


hook-stop

define hook-stop
  l
end

Doc: https://sourceware.org/gdb/current/onlinedocs/gdb/Hooks.html

In addition, a pseudo-command, ‘stop’ exists. Defining (‘hook-stop’) makes the associated commands execute every time execution stops in your program: before breakpoint commands are run, displays are printed, or the stack frame is printed.

Learned from: https://stackoverflow.com/a/8374474/895245

Highlight the current line

This is the only thing missing to completely replace the buggy -tui mode completely.

It is currently not possible without Python scripting: https://sourceware.org/bugzilla/show_bug.cgi?id=21044

With Python scripting, I'm currently using: https://github.com/cyrus-and/gdb-dashboard

How to get GDB to do a 'list' after every step?

See also: How to highlight and color gdb output during interactive debugging?


You can use a GDB macro for this:

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

If you want an arrow pointing at the current line, you might consider using a GDB front-end instead (e.g. M-x gdb in Emacs).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜