在VC中进入MACRO

在VC中进入MACRO,第1张

概述我正在调试一个源代码,它有很多大的#define’d MACRO例程. 我很有兴趣进入它们,但我想,VC不允许步入功能…所以, >我正在将它们转换为函数,但这对我来说变得很难 有没有办法进入MACRO例程?特别是在VC? PS:如果gcc编译器支持步入MACRO,我可以将整个代码移植到gcc中 除了上面的所有正确答案:我通常做的是显示混合显示(C汇编).这显示了真正发生的事情.即使您不是底层程序集 我正在调试一个源代码,它有很多大的#define’d MACRO例程.
我很有兴趣进入它们,但我想,VC不允许步入功能…所以,

>我正在将它们转换为函数,但这对我来说变得很难

有没有办法进入MACRO例程?特别是在VC?

PS:如果gcc编译器支持步入MACRO,我可以将整个代码移植到gcc中

解决方法 除了上面的所有正确答案:我通常做的是显示混合显示(C汇编).这显示了真正发生的事情.即使您不是底层程序集的专家,它也可以了解会发生什么(即它是一个简单的替换还是一个复杂的循环).它还将提供额外的机会进入功能.例如,如果您的宏是
#define foo(a) i++;foo_func(a,i)

你的调试器会显示类似的东西
循环和使用什么样的变量).您可以使用宏定义作为参考来理解它.

00411454  mov         DWord ptr [j],eax 00411457  cmp         DWord ptr [j],0Ah 0041145B  jge         wmain+58h (411478h)     {        foo(j);0041145D  mov         eax,DWord ptr [i] 00411460  add         eax,1 00411463  mov         DWord ptr [i],eax 00411466  mov         eax,DWord ptr [i] 00411469  push        eax  0041146A  mov         ecx,DWord ptr [j] 0041146D  push        ecx  0041146E  call        foo_func (411028h) 00411473  add         esp,8     }

这给出了变量i和j用于调用函数foo_func的线索.

如果使用Visual C,它将允许您进入从宏调用的函数(F11);但不是个别陈述.

总结

以上是内存溢出为你收集整理的在VC中进入MACRO全部内容,希望文章能够帮你解决在VC中进入MACRO所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1240130.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存