我正在尝试在没有 pdb-s 的版本(优化)构建中获取堆栈跟踪。目前,我正在尝试使用 StackWalk64 函数在示例程序执行期间检索函数地址,然后使用在链接阶段生成的映射文件将生成的地址映射到实际的函数名称。请注意,优化已打开。
我在生成的映射文件中看到两个不同函数的地址完全相同。
0001:00000000 ?static_function_call@MyTest@@SAXXZ 00401000 f i main.obj
0001:00000000 ?call_1@MyTest@@QAEXXZ 00401000 f i main.obj
这样的事情可能是什么原因,可能是由于优化吗?那么如何区分这些功能呢?编辑:这是功能体
#include <iostream>
#include <windows.h>
#include <dbghelp.h>
class __declspec(dllexport) MyTest
{
public:
static void static_function_call()
{
}
void call_1()
{
static_function_call();
};
};
int main( void )
{
try
{
MyTest obj;
obj.call_1();
}
catch( ... )
{
}
return ( 0 );
}
谢谢你,-格里戈尔