方案1:

使用wingdb + vc2010

1. 设置环境变量:(d:\Ruby187\other为我的zlib,openssl这些库的目录)

"C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat"

set INCLUDE=%INCLUDE%d:\Ruby187\other\include;
set LIB=%LIB%d:\Ruby187\other\lib;

2. 生成Makefile

注意按这个目录来,别进到win32目录去了
D:\tmp\ruby-1.9.2-p180>win32\configure.bat --prefix=d:\tmp\rubydebug
        cl -nologo -MD rtname.c user32.lib -link > nul
Checking unicows.lib
Creating Makefile.new
"type `nmake' to make ruby."

3、修改makefile
OPTFLAGS = -W2 -wd4996  -Zm600
CFLAGS = /Od -MD $(DEBUGFLAGS) $(OPTFLAGS) $(PROCESSOR_FLAG)
LDFLAGS = $(LDFLAGS) -Fm /DEBUG 

4、编译、安装

D:\tmp\ruby-1.9.2-p180\build>nmake

遇到下面这个错语的话,将源码删除,再重新解压编译,不知道是什么 问题。
NMAKE : fatal error U1045: spawn failed : Permission denied

编译完成,可以安装

D:\tmp\ruby-1.9.2-p180\build>nmake install

5、windbg启动设置

"windbg.exe" -y C:\WINDOWS\Symbols;d:\tmp\ruby-1.9.2-p180;SRV*D:\symbols*http://msdl.microsoft.com/download/symbols

6、调试

启动应用
Windbg提供了两种方式来启动应用,这里以ruby的irb为例:
open executable:ruby -x "<path>\irb.bat",这时候我们可以很方便地在任何地方设置断点,包括main函数。
也可以运行irb之后,在WinDbg里选择attach to a process, 在列出的进程中选择ruby.exe。

image

第二种方案:

windbg+linux

(未写完)

得到源码之后,首先要对其进行编译,不能采用默认的编译方式,
要在执行./configure的时候加上如下参数
CFLAGS="-ggdb -g3 -gdwarf-2"
或者在Makefile中添加如下标志参数:
optflags = -O
debugflags = -ggdb -g3 -gdwarf-2

posted on 2011-07-14 16:01  杂草丛  阅读(1426)  评论(0编辑  收藏  举报