我的程序很简单:
#include <iostream>
void someFunction()
{
printf("im scared world, i dont understand.\n");
}
int main()
{
std::cout << "hello world" << '\n';
someFunction();
system("pause");
return 0;
}
但是主要功能在Ghidra中是这样的:节目
int __cdecl _main(int _Argc,char **_Argv,char **_Env)
{
char cVar1;
char *unaff_EBP;
basic_ostream<char,struct_std::char_traits<char>_> *in_stack_fffffff8;
cVar1 = (char)unaff_EBP;
operator<<<struct_std::char_traits<char>_>(in_stack_fffffff8,unaff_EBP);
operator<<<struct_std::char_traits<char>_>(in_stack_fffffff8,cVar1);
/* Symbol Ref: No symbol: someFunction */
_printf("im scared world, i dont understand.\n");
system("pause");
return 0;
}
为什么?我该怎么办才能解决此问题?
#1 楼
Visual Studio内联了该功能。您将需要告诉VS不要这样做:__declspec(noinline) void someFunction()
{
printf("im scared world, i dont understand.\n");
}
评论
您可以告诉Visual Studio不要优化代码并自动内联函数。使用/ Od编译参数。