将 argv 传递给 gdb

Passing argv to gdb

我是 运行 gdb 的方式如下:

gdb $file "My Arg here" --ex "source .breakpoints_$file.c" --ex 'r' --ex 'set confirm off'

但我在程序中得到以下信息:

─── Variables ───────────────────────────────────
arg argc = 1, argv = 0x7fffffffe1d8: 47 '/'

意味着它没有接收 argv。我如何正确地将 cmd 行参数传递给 gdb?

您可以通过将 args 参数传递给 gdb 来完成此操作。例如:

gdb --ex "source .breakpoints_$file.c" --ex 'r' --ex 'set confirm off' \
    --args $file "An argument" another

现在我们得到:

─── Variables ──────────────────────────────
arg argc = 3, argv = 0x7fffffffe1b8: 47 '/'

>>> p argv[1]
 = 0x7fffffffe49c "An argument"
>>> p argv[2]
 = 0x7fffffffe4a8 "another"