大笨钟 发表于 2013-1-28 14:45:56

很隐蔽的错误,程序无法运行。找不出来,求助

生成了可执行文件,但是文件执行后,总是发生错误报告。可能出错部分的代码如下:
_WndProc proc uses ebx edi esi@hwnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

;如果用户关闭窗口,则进行退出处理
.IF uMsg == WM_DESTROY
   invoke PostQuitMessage,NULL;该函数执行后使得GetMessage的返回值为0
   
.ELSEIF uMsg == WM_CREATE
   invoke CreateWindowEx,NULL,\
    offset szButton,offset szButtonText,\
    WS_CHILD or WS_VISIBLE,\
    10,20,80,55,\
    @hwnd,1,hInstance,NULL
   
.ELSE
   invoke DefWindowProc,@hwnd,uMsg,wParam,lParam;对未处理的函数进行默认处理
   ret
.ENDIF
_WndProc endp

小甲鱼 发表于 2013-1-29 02:51:41

报错内容是?

大笨钟 发表于 2013-1-29 22:50:34

哈哈,千辛万苦,终于找到了错误。正准备将这个错误发一个帖子纪念一下,也以此提醒各位。,⊙﹏⊙b汗! 我在程序的末尾落掉了 xor eax,eax ret指令。虽然说这是一个子程序,有ret指令退回主程序是必须的。但是,经过我多次失败发现,即便是在主程序的结尾,也必须有ret指令,不然的话,就算程序可以执行,执行完毕后也会弹出来一个微软公司提供的 “错误报告发送窗口”,让人很不舒服。不知听懂了没?

大笨钟 发表于 2013-1-29 22:51:18

哈哈,千辛万苦,终于找到了错误。正准备将这个错误发一个帖子纪念一下,也以此提醒各位。,⊙﹏⊙b汗! 我在程序的末尾落掉了 xor eax,eax ret指令。虽然说这是一个子程序,有ret指令退回主程序是必须的。但是,经过我多次失败发现,即便是在主程序的结尾,也必须有ret指令,不然的话,就算程序可以执行,执行完毕后也会弹出来一个微软公司提供的 “错误报告发送窗口”,让人很不舒服。不知听懂了没?

大笨钟 发表于 2013-1-29 22:52:05

小甲鱼 发表于 2013-1-29 02:51 static/image/common/back.gif
报错内容是?

哈哈,千辛万苦,终于找到了错误。正准备将这个错误发一个帖子纪念一下,也以此提醒各位。,⊙﹏⊙b汗! 我在程序的末尾落掉了 xor eax,eax ret指令。虽然说这是一个子程序,有ret指令退回主程序是必须的。但是,经过我多次失败发现,即便是在主程序的结尾,也必须有ret指令,不然的话,就算程序可以执行,执行完毕后也会弹出来一个微软公司提供的 “错误报告发送窗口”,让人很不舒服。不知小甲鱼关注过这个问题没,我学习过程中好马虎啊!!!!很多细节都没注意:'(

小甲鱼 发表于 2013-1-30 01:02:49

大笨钟 发表于 2013-1-29 22:52 static/image/common/back.gif
哈哈,千辛万苦,终于找到了错误。正准备将这个错误发一个帖子纪念一下,也以此提醒各位。,⊙﹏⊙b汗!...

确实是该引起注意的一个问题,容易漏掉

Science 发表于 2013-1-30 01:20:41

同上:lol:lol

soyer 发表于 2013-1-30 08:52:25

写多了自然就习惯了

half-life 发表于 2013-2-9 19:35:46

学习了,哈哈

隐逸侠甘凤池 发表于 2013-2-17 21:21:38

WIN汇编不懂
页: [1]
查看完整版本: 很隐蔽的错误,程序无法运行。找不出来,求助