如何编写一个Unix shell来完成以下批处理

simo110 2010-11-06 11:10:40
有一个程序的coredump文件,文件名为file1,程序名为prog1.可以通过以下步骤获得栈调用信息:
1. $> gdb prog1 file1 =======>这是在shell中
2.gdb> bt =======>这是在gdb中
然后会显示如下栈调用信息:
#0 func (n=250) at tst.c:6
#1 0x08048524 in main (argc=1, argv=0xbffff674) at tst.c:30
#2 0x400409ed in __libc_start_main () from /lib/libc.so.6

现在程序prog1有超过200个的coredump文件。下次可能会更多。
能写一段shell或是别的脚本程序来自动输出到文件中吗?
...全文
148 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
simo110 2010-11-06
  • 打赏
  • 举报
回复
没辙????
steptodream 2010-11-06
  • 打赏
  • 举报
回复
你没试 就不要说不行!你试试又何妨 难道你怕的机器会爆炸?
因为用这样的结构来操作数据 操作ftp等等都没问题 比如
mysql -uroot -ppassword dbname<<EOF
select xxxxx yyy;
delete xxx yyy;
EOF

这里的select delete等操作语句一样是在mysql登陆的状态下执行的。
simo110 2010-11-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 steptodream 的回复:]

一个循环就行了吧
C/C++ code

for dumpfile in /path/to/coredumpfile/*
do
gdb prog1 $dumpfile >>result.log <<EOF
bt
EOF
done
[/Quote]

shell中间没有bt这个命令的,bt是gdb中的指令。必须进入到gdb中才可以。
如果能找到gdb中有bt指令的参数也可以,例如可以用:gdb -xx 代替bt。
steptodream 2010-11-06
  • 打赏
  • 举报
回复
一个循环就行了吧

for dumpfile in /path/to/coredumpfile/*
do
gdb prog1 $dumpfile >>result.log <<EOF
bt
EOF
done

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧