在GDB中打印当前声明

时间:2013-03-08 11:28:01

标签: c gdb

每次我使用n时,都会打印出要执行的下一个语句。

如何查看要执行的下一个语句,就好像我键入了n,但没有实际执行代码?

目前我正在使用where,这会给我下一个语句的行号,我可以使用list查看一些源代码。它需要两个单独的命令才能得到我想要的东西吗?

3 个答案:

答案 0 :(得分:2)

尝试“frame”命令。你会看到这样的东西:

   (gdb) frame
   #0 main () at dummy.c:11
   11    FILE*f = fopen("somefile","r");
   (gdb)

答案 1 :(得分:1)

在您的主目录中的macro中为自己定义.gdbinit

define shownext
where
list
end

好吧,我不确定我所陈述的内容是否有用,但请参阅here了解如何做这样的事情。

答案 2 :(得分:0)

如果你的gdb是用Python支持构建的,那么这个list.current.py脚本会添加一个新的 list-current gdb命令来完成你想要的任务。

示例会话:

$ gdb -x list-current.py /bin/true
(gdb) start
Temporary breakpoint 1 at 0x4014c0: file true.c, line 59.
Starting program: /usr/bin/true 

Temporary breakpoint 1, main (argc=1, argv=0x7fffffffde88) at true.c:59
59    if (argc == 2)
(gdb) list-current 
59    if (argc == 2)
(gdb) list-current  3
59    if (argc == 2)
60      {
61        initialize_main (&argc, &argv);
(gdb) list-current  -2
58       argument.  */
59    if (argc == 2)
(gdb)