在VC中进入MACRO

我正在调试一个源代码,它有很多大的#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);但不是个别陈述.

相关文章

/** C+⬑ * 默认成员函数 原来C++类中,有6个默认成员函数: 构造函数 析构函数 拷贝...
#pragma once // 1. 设计一个不能被拷贝的类/* 解析:拷贝只会放生在两个场景中:拷贝构造函数以及赋值运...
C类型转换 C语言:显式和隐式类型转换 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译...
//异常的概念/*抛出异常后必须要捕获,否则终止程序(到最外层后会交给main管理,main的行为就是终止) try...
#pragma once /*Smart pointer 智能指针;灵巧指针 智能指针三大件//1.RAII//2.像指针一样使用//3.拷贝问...
目录<future>future模板类成员函数:promise类promise的使用例程:packaged_task模板类例程...