如何在gdb中打印出完整的全部argv参数值
只打印出第一个参数的原因
argv在C/C++的main函数中是char **类型,本质是指向字符串数组首元素的二级指针:
argv存储的是第一个字符串(程序自身路径)的指针的地址*argv是对首元素的解引用,拿到的就是第一个字符串的首地址,自然只会输出第一个参数的值,不会包含后续参数
打印所有argv参数的方法
注意操作需要断点停在main函数内部,上下文可读取到argc、argv变量时生效
- 方法1:手动按索引打印,适合参数少的场景
直接指定索引打印对应参数即可,示例命令:print argv[0] print argv[1] print argv[2] print argv[3] - 方法2:一次性批量打印所有参数
gdb支持用@操作符指定连续打印的元素个数,左边填起始地址,右边填要打印的元素数量:
已知当前参数总个数(含程序名)为4时,执行:
通用写法可直接调用当前上下文的argc变量,不用手动数参数个数:print *argv@4
执行后会一次性输出从argv[0]到argv[argc-1]的全部参数内容。print *argv@argc
内容的提问来源于stack exchange,提问作者marlon
相关产品推荐
相关产品推荐

