我使用参数在gdb中运行程序-b # +L -m
,但是当我将break main
argc报告为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] 删除。
我来说两句