金鳞化龙 - 老白


智者创造机会,强者把握机会,弱者等待机会~
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Win32Asm的极简单调试

Posted on 2005-11-17 21:59  秋衫客  阅读(280)  评论(0)    收藏  举报
先什么也别说,请进X:masm32\vkdebug里去先转转....
我看到了很多朋友在程序中都用到了wsprintf 和 MessageBox 来做调试程序.
我早就发现了个新方法,但是不回家是不能发表的,不方便嘛.什么也别说了,
请看:
要显示EAX的值:  PrintHex EAX , "显示EAX的值"  
ebx,ecx...  都是可以的这样来做到的.
插到.if中这样用...请看:
    .if eax
        PrintText "eax 为真"
        ;.....
        ;其它代码
        ;.....
    .else
        PrintText "eax 为假"
        ;.....
        ;其它代码
        ;.....
    .endif
其它的:比如

  .data
   myDebug    dd   ?

  .code
  
        ;.....
        ;其它代码
        ;.....
   PrintHex myDebug , "myDebug 现在等于"
        ;.....
        ;其它代码
        ;.....

还有更简单的
        PrintLine  ;它只画条 "-----------"无参数但是也很有用的.


只写到这里,还有很多的,请自己到VKdebug里找去吧.
debug 一下FPU也是可以的呀!
这么好的东东,不知为什么没有很多人来用.可能是因为这个吧:
!!!!!!!!!!!!!!注意!!!!重中之重!!!!!!!!!!!!!!!
在你的Asm程序开始时候,一定要先:

;在这里放你要用到的inc 和 lib 要放到前面

include masm32.inc
includelib masm32.lib
;---------------------------


include debug.inc          
includelib debug.lib
;这两个不在INCLUDE下.自己找一下.在VKdebug里.请一定要先copy 到include里

include macros.asm
;这个也不在include....  在masm32\macros里.最好也copy 到include里

includelib kernel32.lib  ;<-它最讨厌,只要你的debug.lib的位置在它的前面,就编译出错!!!  不知是为什么..

还有,如果你的程序里有窗口或对话框出现的话,
你就只有手动显示的启动dbgwin.exe
难道这是 db鸡瘟.exe 的BUG?? :-)