调试程序方法

来源:互联网 发布:淘宝手机单刷 编辑:程序博客网 时间:2024/06/06 07:02
调试程序方法
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
0 0
原创粉丝点击