您的位置:首页 > 其它

调试程序方法

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: