第4章断点和单步执行断点和单步执行是两个经常使用的调试功能,也是调试器的核心功能。本章我们将介绍IA-32 CPU是如何支持断点和单步执行功能的。前两节将分别介绍软件断点和硬件断点,第4.3节介绍用于实现单步执行功能的陷阱标志。在前三节的基础上,第 4.4节将分析一个真实的调试器程序,看它是如何实现...
分类:
其他好文 时间:
2014-07-28 15:37:13
阅读次数:
170
1.splint
2.strace
3.ltrace...
分类:
其他好文 时间:
2014-07-02 08:26:07
阅读次数:
300
1.使用print命令查看变量值
使用print命令(简写为p)可以查看变量值。
使用如下的程序1进行测试。
#include
struct node{
int index;
struct node* next;
};
int main(void) {
struct node head;
head.index = 1;...
分类:
其他好文 时间:
2014-06-22 20:53:08
阅读次数:
301
下面是于线程相关的GDB命令用法汇总:
info threads:给出关于当前所有线程的信息。
thread 3:改成线程3.
break 88 thread 3 :当线程到达源代码88时停止执行。
break 88 thread 3 if i == 2 当线程3到达源代码行88行,并且变量i的值为2时停止执行。
对下面的多线程进行调试:
#include
#include ...
分类:
编程语言 时间:
2014-06-22 07:31:50
阅读次数:
310
1.跟踪断电
创建的每个断点(包括断电、监视点和捕获点)都标识为从1开始的唯一整数标识符。这个标识符用来执行该断点上的各种
操作。调试器还包含一种列出所有断点及其属性的方法。...
分类:
其他好文 时间:
2014-06-11 00:05:21
阅读次数:
250
1.gcc的-g选项
如果要使用gdb进行调试,必须在编译时在gcc中加入-g选项,使用参数 -g 表示将源代码信息编译到可执行文件中。
如果不使用-g选项:
#include
int main(void)
{
int i = 1;
i = i + 1;
printf("i = %d\n",i);
return 0;
}gcc main.c
gdb a.out
(...
分类:
其他好文 时间:
2014-05-25 21:38:46
阅读次数:
238
今日读了张银奎老师的《软件调试》,前面的CPU和硬件相关的部分离得比较远,所以从第九章操作系统读起,今天的读书笔记:
9.2采集调试消息
调试事件分为8种
typedef enum _DBGKM_APINUMBER
{
DbgkmExceptionApi = 0, // 异常
DbgkmCreateThreadApi = 1, // 创建线程
DbgkmCreateProcessAp...
分类:
其他好文 时间:
2014-05-13 15:49:03
阅读次数:
434