Visual Studio命中未知断点

问题描述:

这是我点击“本地Windows调试器”时的屏幕外观,然后单击断点按钮。它去是点.....Visual Studio命中未知断点

http://i.stack.imgur.com/yufiH.png

我的ASM文件说:

.model small 
.stack 
.data 
.code 
_Func proc 
    mov ax, 1 
    leave 
    ret 
_Func endp 
end 

而且cpp文件:

extern "C" { 
    int Func(); 
} 
int main(int argc, char** argv) { 
    Func(); 
    return 0; 
} 

所以我不知道,为什么这个代码会碰到这个奇怪的断点?这是不是在我的代码...

是的,我知道什么“int 3”在组装意味着,这不是我想知道的。这不是我的代码,但它不会让我的代码运行...

+2

“ENTER”指令与“LEAVE”匹配在哪里? – SomeWittyUsername 2014-11-22 07:45:03

+0

你的asm是无稽之谈,堆栈指针被破坏。所以RET会在任意地址恢复。这恰好是代码段中的填充字节。填充字节是INT3指令,你可以猜出原因。 – 2014-11-22 10:25:18

.model small适用于32位Windows(Win32)的16位MSDOS,而不是。请尝试以下代码:

.model flat 
.code 
_Func proc 
    mov eax, 1 
    ret 
_Func endp 
end