我试图在没有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 );
}
谢谢你, -Grigor