news 2026/4/16 14:58:21

汇编语言全接触-74.用Soft-ICE实现源码级调试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
汇编语言全接触-74.用Soft-ICE实现源码级调试

在 Windows 编程中,Soft-ICE 是一件必不可少的调试工具,但 Windows 程序的编程中有很多的时候是和数据结构和 API 打交道,经过编译以后,原来的 mov stRect.left,eax 之类的代码也就变成了 mov [xxxx],eax,invoke UpdateWindow,hWnd 之类的语句也就变成了 push [xxxx]/call [xxxxx] 之类的语句,如果你不记的源程序了,你就根本无法知道你在向什么数据写或者调用什么 API,在 C++ 编程的时候,我们都可以进行源代码级别的跟踪调试,但在汇编中,这可能吗?

答案是可以的,用 Soft-ICE 就可以实现,本文讨论使用 Masm 的情况下用 Soft-ICE 实现源码调试,具体的实现如下:

首先,在编译的时候要生成带符号信息的 Object 文件,这需要打开 ML 程序的两个选项

ML /coff /Zi ...

/coff 告诉编译器产生符号调试格式的 Object 文件。

/Zi 使 Object 文件中包括符号调试信息。

然后也要设置 Link 文件,因为 Soft-ICE 使用 CodeView 格式的调试信息,所以 Link 也要包括下面的选项

Link /DEBUG /DEBUGTYPE:CV ...

/DEBUG 选项告诉 Link 在 exe 文件中包含调试信息。

/DEBUGTYPE:CV 当然是调试信息要用 CodeView 格式啦。

最后,就是如何使用 Soft-ICE 了,如果要使用符号调试功能,你不能再用 Loader32.exe 程序来装入 exe 文件,而是必须用符号转换程序 nmsym,使用方法是在命令行中打入 nmsym /translate:source,package,always /source:. /load:execute,break 你的exe文件,你可以把它编写成一个 bat 文件如下 nmsym /translate:source,package,always /source:. /load:execute,break %1,假定文件名为 debug.bat ,然后你就可以用 debug xxx.exe 来享受源代码调试的乐趣了。

别的一些必要的设置:你必须把 Soft-ICE 的目录和 Masm 的 bin 目录设置到 path 中,因为这些路径中还有些文件要用到。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 9:21:42

揭秘MCP AI Copilot核心能力:如何在生产环境高效落地AI运维?

第一章:MCP AI Copilot核心能力概览MCP AI Copilot 是一款面向企业级开发与运维场景的智能助手,深度融合人工智能与自动化技术,旨在提升软件交付效率、优化系统稳定性并降低人为操作风险。其核心能力覆盖代码生成、故障诊断、配置建议、安全合…

作者头像 李华
网站建设 2026/4/16 9:21:41

多场景验证:工业检测、零售盘点中的万物识别模型应用实录

多场景验证:工业检测、零售盘点中的万物识别模型应用实录 引言:从通用视觉理解到垂直场景落地 在智能制造与智慧零售快速发展的今天,自动化视觉识别能力已成为提升运营效率的核心驱动力。传统图像分类模型往往受限于固定类别、泛化能力弱等问…

作者头像 李华
网站建设 2026/4/16 9:21:58

1小时开发MSVCP100.DLL修复工具:快马平台实战

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 在快马平台上快速构建一个MSVCP100.DLL修复工具的MVP版本。核心功能包括:1)系统扫描检测DLL文件 2)自动从可信源下载 3)简易安装功能。要求使用Python编写控制台程序&a…

作者头像 李华
网站建设 2026/4/16 9:23:28

SELinux零基础入门:5分钟理解核心概念

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个SELinux交互式学习平台,包含概念讲解模块和实验沙盒。沙盒环境应预装常见服务(如Apache、MySQL),允许用户实时修改SELinux配置并观察效果。提供逐步…

作者头像 李华
网站建设 2026/4/16 9:25:04

60秒原型:用VOLATILE快速验证你的多线程想法

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个即用型多线程测试沙盒:1) 预置常见VOLATILE使用场景模板;2) 包含一键运行按钮;3) 实时显示线程执行状态和变量值变化;4) 支…

作者头像 李华
网站建设 2026/4/16 9:22:59

中文场景下的特殊挑战:识别月饼礼盒的N种姿势

中文场景下的特殊挑战:识别月饼礼盒的N种姿势 为什么通用模型难以区分月饼包装? 在食品电商场景中,月饼礼盒的识别一直是个特殊挑战。通用视觉模型虽然能检测物体,但面对包装相似、口味各异的月饼礼盒时,往往难以准确区…

作者头像 李华