下载此beplayapp体育下载

Linux下的段错误(Segmentationfault)产生的原因及调试方法.pdf


beplayapp体育下载分类:通信/电子 | 页数:约6页 举报非法beplayapp体育下载有奖
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该beplayapp体育下载所得收入归上传者、原创者。
  • 3.下载的beplayapp体育下载,不会出现我们的网址水印。
1 / 6 下载此beplayapp体育下载
beplayapp体育下载列表 beplayapp体育下载介绍
Linux 下的段错误(Segmentation fault)产生的原因及调试方法(经典)
2009-04-05 11:25
简而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不
存在对应的物m /lib/...done.
Loaded symbols for /lib/
Reading symbols from /lib/ld-...done.
Loaded symbols for /lib/ld-
Core was generated by `./'.
Program terminated with signal 11, Segmentation fault.
#0 0x08048524 in dummy_function () at :4
4 *ptr = 0x00;
哇,好历害,还是一步就定位到了错误所在地,佩服一下 Linux/Unix 系统的此类设计。
接着考虑下去,以前用 windows 系统下的 ie 的时侯,有时打开某些网页,会出现“运行时错
误”,这个时侯如果恰好你的机器上又装有 windows 的编译器的话,他会弹出来一个对话框,
问你是否进行调试,如果你选择是,编译器将被打开,并进入调试状态,开始调试。
Linux 下如何做到这些呢?我的大脑飞速地旋转着,有了,让它在 SIGSEGV 的 handler 中调
用 gdb,于是第三个方法又诞生了:
:
#include <>
#include <>
#include <>
#include <>

void dump(int signo)
{
char buf[1024];
char cmd[1024];
FILE *fh;

snprintf(buf, sizeof(buf), "/proc/%d/cmdline", getpid());
if(!(fh = fopen(buf, "r")))
exit(0);
if(!fgets(buf, sizeof(buf), fh))
exit(0);
fclose(fh);if(buf[strlen(buf) - 1] == '\n')
buf[strlen(buf) - 1] = '\0';
snprintf(cmd, sizeof(cmd), "gdb %s %d", buf, getpid());

Linux下的段错误(Segmentationfault)产生的原因及调试方法 来自beplayapp体育下载www.apt-nc.com转载请标明出处.

非法内容举报中心
beplayapp体育下载信息
  • 页数6
  • 收藏数0收藏
  • 顶次数0
  • 上传人小s
  • 文件大小223 KB
  • 时间2022-06-19