调试程序方法
来源:互联网 发布:淘宝手机单刷 编辑:程序博客网 时间: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
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
- WinCE程序调试方法
- 程序调试方法总结
- 调试程序的方法
- Linux 程序调试方法
- 调试程序方法
- 程序调试方法
- matlab程序调试方法
- 程序调试方法总结
- 调试程序方法
- .Net服务程序调试方法
- 注意调试程序的方法
- php程序调试方法总结
- OJ程序简便调试方法
- NDK程序的调试方法
- 常用的程序调试方法
- NDK: 程序的调试方法
- iOS 程序Bug调试方法
- python程序的调试方法
- H.264库移植 /libjpeg库移植
- vpnc ubuntu vpn代理服务器设置
- bzoj 1412: [ZJOI2009]狼和羊的故事
- 2014年——年中总结
- 【云计算】虚拟化技术
- 调试程序方法
- UVA10341
- 去掉Launcher两边的黑色渐变区域
- 待看blog
- xcode添加static library project
- 黑马程序员16——OC之Fundation(NSNumber)
- javaWeb学习笔记——关于交叉连接-内连接-左外连接-右外连接的区别
- iOS网络编程实践--NSStream实现TCP Socket iPhone客户端
- mmap/ioremap 内存相关