WEB开发网
开发学院软件开发VC 仅通过崩溃地址找出源代码的出错行 阅读

仅通过崩溃地址找出源代码的出错行

 2007-03-17 21:26:38 来源:WEB开发网   
核心提示: 在 MASM 中,我们要设置编译和连接参数,仅通过崩溃地址找出源代码的出错行(2),我通常是这样做的:rc %1.rcml /c /coff /Zd %1.asmlink /subsystem:windows /mapinfo:exports /mapinfo:lines /map:%1.

在 MASM 中,我们要设置编译和连接参数,我通常是这样做的:

rc %1.rc

ml /c /coff /Zd %1.asm

link /subsystem:windows /mapinfo:exports /mapinfo:lines /map:%1.map %1.obj %1.res

把它保存成 makem.bat ,就可以在命令行输入 makem filename 来编译生成 EXE 可执行文件和 MAP 文件了。

在此我先解释一下加入的参数的含义:

/Zd 表示在编译的时候生成行信息

/map[:filename] 表示生成 MAP 文件的路径和文件名

/mapinfo:lines 表示生成 MAP 文件时,加入行信息

/mapinfo:exports 表示生成 MAP 文件时,加入 exported functions (如果生成的是 DLL 文件,这个选项就要加上)

OK,通过上面的步骤,我们已经得到了 MAP 文件,那么我们该如何利用它呢?

让我们从简单的实例入手,请打开你的 VC ,新建这样一个文件:

01 //****************************************************************
02 //程序名称:演示如何通过崩溃地址找出源代码的出错行
03 //作者:罗聪
04 //日期:2003-2-7
05 //出处:http://www.luocong.com(老罗的缤纷天地)
06 //本程序会产生“除0错误”,以至于会弹出“非法操作”对话框。
07 //“除0错误”只会在 Debug 版本下产生,本程序为了演示而尽量简化。
08 //注意事项:如欲转载,请保持本程序的完整,并注明:
09 //转载自“老罗的缤纷天地”(http://www.luocong.com)
10 //****************************************************************
11
12 void Crash(void)
13 {
14 int i = 1;
15 int j = 0;
16 i /= j;
17 }
18
19 void main(void)
20 {
21 Crash();
22 }

上一页  1 2 3 4  下一页

Tags:通过 崩溃 地址

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接