gpt4 book ai didi

c++ - 在 VC++ 中步入 MACRO

转载 作者:可可西里 更新时间:2023-11-01 18:26:59 25 4
gpt4 key购买 nike

我正在调试一个源代码,它有很多大的#define'd MACRO 例程。我对进入它们很感兴趣,但我想,VC++ 不允许进入功能......所以,

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

有没有办法进入宏例程?尤其是在 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++ - 在 VC++ 中步入 MACRO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1496284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com