如何在GDB中传递含空格的参数?MacOS环境下问题咨询
在MacOS的GDB中传递带空格的命令行参数
我之前也踩过MacOS上GDB处理带空格参数的坑,直接用双引号或者转义空格确实经常不生效,这里给你几个亲测可行的解决方案:
方法1:用set args预先设置参数(最可靠)
这是我平时用得最多的方式,先单独把参数配置好,再启动程序:
(gdb) set args "print 100" (gdb) run
如果你的程序不需要引号,只是要把print 100作为单个参数,也可以写成set args print\ 100,效果是一样的。
方法2:在run命令里用单引号包裹
MacOS的GDB对单引号的解析比双引号更靠谱,试试这个写法:
(gdb) run 'print 100'
这样GDB就会把整个print 100当作一个完整参数传给你的程序,不会拆分成两个。
方法3:双重转义引号
如果上面两种都不凑效,还可以试试GDB内部的转义方式,给引号也加上反斜杠:
(gdb) run \"print 100\"
不过这种方式可能会把引号本身也传递给程序,所以如果你的程序不需要引号的话,还是优先用前两种方法。
另外提一句,MacOS上的GDB因为系统签名和沙箱限制,行为有时候和Linux下的GDB不太一样,set args是最通用且不容易出问题的方案,推荐优先用这个。
内容的提问来源于stack exchange,提问作者M.G
相关产品推荐
相关产品推荐

