Linux 程序崩溃后的源码定位
Linux 程序崩溃后的源码定位: 以centos为例1. 在系统中运行下列命令:#ulimit -c unlimited#echo "1" > /proc/sys/kernel/core_uses_pid#echo "core-%e-%p-%t" > /proc/sys/kernel/core_pattern 关于这些命令:先设置崩溃后转储文件大小:ul
·
Linux 程序崩溃后的源码定位: 以centos为例
1. 在系统中运行下列命令:
#ulimit -c unlimited
#echo "1" > /proc/sys/kernel/core_uses_pid
#echo "core-%e-%p-%t" > /proc/sys/kernel/core_pattern
关于这些命令:
先设置崩溃后转储文件大小:ulimit -c 1024(kbytes单位)或者ulimit -c unlimited
查看 ulimit -c
查看崩溃文件输出位置:more /proc/sys/kernel/core-pattern
设置崩溃文件输出位置:
echo "1" > /proc/sys/kernel/core-user-pid使core文件名加上pid号 或
echo "/root/corefile/core-%e-%p-%t" > /proc/sys/kernel/core-pattern控制core文件保存位置和文件名格式。
如果你想把崩溃后的文件输出到当前目录 下 echo "core-%e-%p-%t" > /proc/sys/kernel/core-pattern
以下是参数列表:
%p - insert pid into filename 添加pid
%u - insert current uid into filename 添加当前uid
%g - insert current gid into filename 添加当前gid
%s - insert signal that caused the coredump into the filename 添加导致产生core的信号
%t - insert UNIX time that the coredump occurred into filename 添加core文件生成时的unix时间
%h - insert hostname where the coredump happened into filename 添加主机名
%e - insert coredumping executable name into filename 添加命令名
2. 在你的工程编译时加 -g,假如编译的可执行文件为xx.bin
3. #objcopy --only-keep-debug xx.bin xx.bin.dbg
此时会生成一个调试用的信息文件xx.bin.dbg,当然也可以#objcopy xx.bin xx.bin.dbg 这样崩溃后得到的信息更全面,不过这个文件会大一点.
4. #strip xx.bin
用来减小可执行文件的体积
5. 在程序跑挂后,会在当前目录生成core文件
6. gdb -c core文件 xx.bin
7. 进入gdb后,执行file xx.bin.dbg
6. bt 或者 where 就能看到你的程序挂到哪里, 如果你的在第3步 没有加 --only-keep-debug 这个参数,你就可以看到当时参数的值.
1. 在系统中运行下列命令:
#ulimit -c unlimited
#echo "1" > /proc/sys/kernel/core_uses_pid
#echo "core-%e-%p-%t" > /proc/sys/kernel/core_pattern
关于这些命令:
先设置崩溃后转储文件大小:ulimit -c 1024(kbytes单位)或者ulimit -c unlimited
查看 ulimit -c
查看崩溃文件输出位置:more /proc/sys/kernel/core-pattern
设置崩溃文件输出位置:
echo "1" > /proc/sys/kernel/core-user-pid使core文件名加上pid号 或
echo "/root/corefile/core-%e-%p-%t" > /proc/sys/kernel/core-pattern控制core文件保存位置和文件名格式。
如果你想把崩溃后的文件输出到当前目录 下 echo "core-%e-%p-%t" > /proc/sys/kernel/core-pattern
以下是参数列表:
%p - insert pid into filename 添加pid
%u - insert current uid into filename 添加当前uid
%g - insert current gid into filename 添加当前gid
%s - insert signal that caused the coredump into the filename 添加导致产生core的信号
%t - insert UNIX time that the coredump occurred into filename 添加core文件生成时的unix时间
%h - insert hostname where the coredump happened into filename 添加主机名
%e - insert coredumping executable name into filename 添加命令名
2. 在你的工程编译时加 -g,假如编译的可执行文件为xx.bin
3. #objcopy --only-keep-debug xx.bin xx.bin.dbg
此时会生成一个调试用的信息文件xx.bin.dbg,当然也可以#objcopy xx.bin xx.bin.dbg 这样崩溃后得到的信息更全面,不过这个文件会大一点.
4. #strip xx.bin
用来减小可执行文件的体积
5. 在程序跑挂后,会在当前目录生成core文件
6. gdb -c core文件 xx.bin
7. 进入gdb后,执行file xx.bin.dbg
6. bt 或者 where 就能看到你的程序挂到哪里, 如果你的在第3步 没有加 --only-keep-debug 这个参数,你就可以看到当时参数的值.
更多推荐
已为社区贡献2条内容
所有评论(0)