gdb错误计数包含'#'的args

马特·G

我使用参数在gdb中运行程序-b # +L -m,但是当我将break mainargc报告为2时,最后一个可用参数为"-b"但是,show args在GDB中使用可以给我Argument list to give program being debugged when it is started is "-b # +L -m",这是准确的。

Starting program: /home/matt/.../args -b # +L -m

Breakpoint 1, main (argc=2, argv=0x7fffffffe028) at args.c:129

#即使在GDB(不是bash)中,在参数中是否也特别对待#?

丢失的

我假设您正在Linux上运行。默认情况下,Linux上的gdb将调用外壳程序以启动程序。因此#,shell之后的所有内容仍将解释为注释。您可以通过set startup-with-shell off命令告诉它不要使用外壳程序来启动程序,从而在gdb中更改该行为

这是一个仅打印的示例程序argc

#include <stdio.h>
int main(int argc, char **argv)
{
    printf("%d\n", argc);
    return 0;
}

这是带有或不带有shell的gdb运行情况。

(gdb) r -b # +L -m
Starting program: /tmp/a.out -b # +L -m
2
[Inferior 1 (process 28385) exited normally]
(gdb) set startup-with-shell off
(gdb) r -b # +L -m
Starting program: /tmp/a.out -b # +L -m
5
[Inferior 1 (process 28443) exited normally]
(gdb) 

有关程序启动的更多详细信息,请参见gdb手册

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章