>cmd="/usr/bin/gdb -q --batch -ex 'thread apply all bt full' /proc/8969/exe /tmp/core.xxx"
>ret=`$cmd`
Excess command line arguments ignored. (bt ...)
apply: No such file or directory.
/etc/all: No such file or directory.
Undefined command: "". Try "help".
>echo $ret
>
但是-ex 'thread apply all bt full'改成了-ex 'bt',结果是正确的。我不知道为什么,也不知道如何修复它。
在命令行中键入/usr/bin/gdb -q --batch -ex 'thread apply all bt full' /proc/8969/exe /tmp/core.xxx"
并执行成功
1条答案
按热度按时间roqulrg31#
在
$cmd
的参数扩展之后,shell将进行字段拆分,使用$IFS中的分隔符(通常为空格)进行拆分。这告诉GDB执行一个名为
'thread
的命令,并调试一个名为apply
的可执行文件和核心文件all
。获得所需结果的一种方法是运行
如果使用bash或其他支持数组的现代shell,这可能更好: