调试程序方法
2014-09-03 20:51
176 查看
调试程序方法
1.使用strace工具跟踪系统调用和信号:
系统调用和信号是发生在用户空间和内核空间
边界处的事件,使用strace工具执行程序会记录调用的系统调用、接受到的信号。
strace -o xawtv.log xawtv
2.使用memwatch进行内存调试:
比如内存泄露、缓冲区溢出等内存错误。
在代码中加入头文件memwatch.h
与memwatch.c一起编译、连接
要定义宏MEMWATCH、MEMWATCH_STDIO
3.段错误
一.使用库函数backtrace和backtrace_symbols定位段错误
/* 设置SIGSEGV信号的处理函数 */
signal(SIGSEGV, DebugBacktrace);
/* SIGSEGV信号的处理函数,回溯栈,打印函数的调用关系 */
void DebugBacktrace(void)
{
#define SIZE 100
void *array[SIZE];
int size, i;
char **strings;
fprintf (stderr, "\nSegmentation fault\n");
size = backtrace (array, SIZE);
fprintf (stderr, "Backtrace (%d deep):\n", size);
strings = backtrace_symbols (array, size);
for (i = 0; i < size; i++)
fprintf (stderr, "%d: %s\n", i, strings[i]);
free (strings);
exit(-1);
}
二.
让程序直接运行,当它发生错误时,令它产生core dump文件
然后使用gdb根据core dump文件找到发生错误的地方
1. ulimit -c unlimited
2. 执行应用程序 : 程序出错时会在当前目录下生成名为core的文件
在PC上:
3. /bin/arm-linux-gdb ./test_debug ./core
(gdb) backtrace
1.使用strace工具跟踪系统调用和信号:
系统调用和信号是发生在用户空间和内核空间
边界处的事件,使用strace工具执行程序会记录调用的系统调用、接受到的信号。
strace -o xawtv.log xawtv
2.使用memwatch进行内存调试:
比如内存泄露、缓冲区溢出等内存错误。
在代码中加入头文件memwatch.h
与memwatch.c一起编译、连接
要定义宏MEMWATCH、MEMWATCH_STDIO
3.段错误
一.使用库函数backtrace和backtrace_symbols定位段错误
/* 设置SIGSEGV信号的处理函数 */
signal(SIGSEGV, DebugBacktrace);
/* SIGSEGV信号的处理函数,回溯栈,打印函数的调用关系 */
void DebugBacktrace(void)
{
#define SIZE 100
void *array[SIZE];
int size, i;
char **strings;
fprintf (stderr, "\nSegmentation fault\n");
size = backtrace (array, SIZE);
fprintf (stderr, "Backtrace (%d deep):\n", size);
strings = backtrace_symbols (array, size);
for (i = 0; i < size; i++)
fprintf (stderr, "%d: %s\n", i, strings[i]);
free (strings);
exit(-1);
}
二.
让程序直接运行,当它发生错误时,令它产生core dump文件
然后使用gdb根据core dump文件找到发生错误的地方
1. ulimit -c unlimited
2. 执行应用程序 : 程序出错时会在当前目录下生成名为core的文件
在PC上:
3. /bin/arm-linux-gdb ./test_debug ./core
(gdb) backtrace
相关文章推荐
- Visual C++程序调试方法入门
- 细谈VC程序调试的若干方法
- 【转载】vc中单步调试mex程序方法步骤
- 调试程序一般用的方法
- struts资源文件的配置及程序调试的方法-视频(包含所有中文乱码的解决方案)
- 用IIs调试程序可用的检查错误方法
- C#中Release和debug模式下调试跟踪程序的原则和方法(
- vs 2005调试程序是出现无法在web服务器上启动调试,调试失败的解决方法。
- asp.net程序编译调试时偶尔出现访问被拒绝的错误的解决方法
- VS2005安装后,程序无法调试的解决方法
- 调试MonoRail程序的三种方法
- 测试网络SNMP连接的几个方法(我平时调试SNMP程序时用到的几个解决方案)
- vs.net的Web程序无法调试的解决方法之一
- 转载:IDA Pro 5.0 动态调试 Smartphone 程序方法
- C语言的宏定义和调试程序方法
- VS2005安装后,程序无法调试的解决方法
- AutoCAD.net(三)用VS.NET2005开发ObjectARX程序 调试方法
- Visual C++程序调试方法入门
- “无法在Web服务器上启动调试.你不具备调试此程序的权限,此项目的URL位于Internet区域”的解决方法
- 调试自定义操作/安装程序类的方法