假设我正在调试优化的代码中的一个崩溃。我查看反汇编并看到类似以下内容:
现在假设我知道存储在edi中的结构,并且在这种情况下,它是一个相当大的结构。足够大,以至于我不能一眼看出8Ch偏移对应哪个字段。
我一直在做的就是在Visual Studio的监视窗口中打开并手动执行指针算术运算(offsetof宏将执行此操作),直到找到匹配的那个,但这很繁琐。有没有更快速地确定正在访问哪个字段的方法?
lea eax,[edi+8Ch]
现在假设我知道存储在edi中的结构,并且在这种情况下,它是一个相当大的结构。足够大,以至于我不能一眼看出8Ch偏移对应哪个字段。
我一直在做的就是在Visual Studio的监视窗口中打开并手动执行指针算术运算(offsetof宏将执行此操作),直到找到匹配的那个,但这很繁琐。有没有更快速地确定正在访问哪个字段的方法?
cl.exe input.cpp /d1reportAllClassLayout > layouts.txt
将生成所有类/结构的布局转储。不幸的是,似乎需要编译为 C++,而不是纯 C(添加/TP
强制将 .c 文件编译为 C++)。 - DCoder