电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

IDA调试器跟踪功能

IDA调试器跟踪功能_第1页
1/7
IDA调试器跟踪功能_第2页
2/7
IDA调试器跟踪功能_第3页
3/7
使用IDA 的跟踪功能 上一篇调试器教程给出了如何用常用的调试命令来调试一个小程序。本教程将给出另一种方法。下面我们利用IDA 调试器的跟踪功能来调试这个小程序。 一个小 bug 程序 这个小程序只是简单的计算了一下一组数据(1,2,3,4,5)的平均值。这组数据被保存在两个数组里,一个是 8bit的数值,一个是 32bit数值表示。 #include char char_average(char array[], int count) { int i; char average; average = 0; for (i = 0; i < count; i++) average += array[i]; average /= count; return average; } int int_average(int array[], int count) { int i, average; average = 0; for (i = 0; i < count; i++) average += array[i]; average /= count; return average; } void main(void) { char chars[] = { 1, 2, 3, 4, 5 }; int integers[] = { 1, 2, 3, 4, 5 }; printf("chars[] - average = %d\n", char_average(chars, sizeof(chars))); printf("integers[] - average = %d\n", int_average(integers, sizeof(integers))); } 运行它,我们得到如下结果: chars[] - av erage = 3 integers[] - av erage = 1 0 5 4 2 2 8 可以看出在整数方式下计算的结果是错误的,我们用IDA 的调试器来分析一下吧。 什么是跟踪 跟踪允许你记录应用程序运行时的变化信息。我们把跟踪信息称为“跟踪事件”。 IDA 记录把跟踪事件记录在一个跟踪缓存区中。跟踪缓存区的大小可以设定为无限大(此时你需要很多内存),或者固定的大小(这种情况下,新的跟踪事件会覆盖老的跟踪事件)。在我们这个例子中,由于我们调试的程序非常小,我们把它设定为无穷大:选择在Debugger主菜单下的Trace 子菜单中的Tracing options,设定 Tracing Buffer Size 为0。 IDA 提供几种不同的跟踪机制: 1、 指令跟踪:IDA 将会记录每一条指令的执行,并保存寄存器数值,通过使用这些信息,你可以找出应用程序的执行过程,并可找出哪条指令修改了哪个寄存器。 2、 函数跟踪:IDA 将会记录所有的函数调用和函数返回。 3、 读写-写-执行跟踪:IDA 将会记录一个对指定地址的所有访问。这种机制相当于是不停止的断点。 对每种跟踪机制,都会记录相应的跟踪事件到跟踪缓存区,也可以保存到一个 tx t 的文件中,...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

IDA调试器跟踪功能

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部