gdb自动运行

前阵子,有个机顶盒程序,升级后,起不来。根据打印分析的话,是出现了段错误。开机的时候段错误,且那么多盒子,就出现那么一两个,概率太小。要是人工去跑gdb,那太费时费力了。于是就希望能够在启动的时候,自动去跑gdb。

虽然在启动脚本里面,使用了./gdb demo,但是这样的话,每次起来,还是需要手动输入run命令去运行。这个就达不到自动运行的结果。因为如果开机正常启动的话,还得让盒子重启,再去跑./gdb demo,不可能人工等在那里输入run命令。于是就想能够一条命令,解决在执行./gdb demo后,能够自动输入run命令,而且在出现段错误的时候,能自动输入bt,获取堆栈,这样才能拷机获取有用的信息。

其实一开始的时候,是想用生产coredump的方式来获取堆栈的,但是这个方法试了,生成的coredump文件用不了,不知道是什么原因。编译链也是一样的,因此只有自动运行gdb的方法。

参考了gdb --help,似乎没看到有用的信息(有可能是英文确实不过关)。

最终的方法如下,使用:

./gdb demo 0

其中,在linux,0表示标准输入,然后在cmd.txt中,放入文本:

run

bt

分行保存。这样在运行gdb的时候,会把cmd.txt的内容读取标准输入,就可以自动运行了。不过这样也有点不好,就是bt命令也很快就执行了。不过根据测试的结果,还是可以看到堆栈的

你可能感兴趣的:(gdb自动运行)