在Visual Studio debugmode中编译可执行文件:jmp到函数体而不是调用中的直接地址

And*_*ndy 2 c++ assembly visual-studio

想象这个假的程序:

void foo ( void )
{
    // anything
}

int main ()
{
    foo ();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当使用Visual Studio在调试模式下编译时,编译器会构建某种"函数映射",或者调用它.

因此,当您在调试器中跟踪foo(),或者只是尝试通过&foo检索函数的偏移量时,您会发现自己处于jmp的"列表"中,当您再次关注它们时会引导您进入实际函数身体.

我的问题是:是否有可能为单个选择函数禁用它,以便&foo将地址返回给函数体,而不是jmp.当然没有禁用调试模式.

如果没有,哪个标志启用/禁用整个程序?

提前致谢 !

编辑用户SigTerm: 在此输入图像描述

dsm*_*day 8

关闭"增量链接"

你的问题很像这个 函数的地址不是实际的代码地址