如何用Visual Studio调试特定Win7环境下崩溃的Firefox 1.7.2?
调试Firefox 1.7.2特定Win7 x64机器启动崩溃问题
问题背景
- 目标程序:Firefox 1.7.2
- 异常现象:仅在一台Windows 7 x64旗舰版机器上启动即崩溃,同版本系统的其他机器运行正常
- 崩溃根因:msvcrt.dll中的
from_strstr_to_strchr()函数触发访问违例(错误码c0000005) - 可用资源:该版本完整源码、官方预编译二进制包
已尝试的调试与排查步骤
1. 调试官方发布版二进制
- 使用Visual Studio调试时,仅能查看msvcrt.dll的反汇编代码,栈追踪从该DLL起始,无法定位Firefox侧的调用位置及传入参数
- 已尝试在「解决方案→通用属性→调试源文件」中添加源码路径,且取消勾选「调试→选项」中的「要求源代码与原始版本完全匹配」,但仍提示“源代码不可用”
2. 编译调试版程序
使用以下.mozconfig配置从源码编译调试版:
ac_add_options --disable-tests ac_add_options --without-system-nspr ac_add_options --without-system-zlib ac_add_options --without-system-jpeg ac_add_options --without-system-png ac_add_options --without-system-mng ac_add_options --enable-crypto
- 编译机器上调试版可正常运行,但移至测试机后,因缺失
msvcrtd.dll无法启动 - 手动拷贝
msvcrtd.dll后仍崩溃,推测是该DLL适配Visual C++ 6,与测试机已安装的Visual C++ 2008运行时存在冲突
3. 系统层面清理与修复
- 用Revo Uninstaller彻底卸载并重装Firefox,清理残留文件与注册表项
- 卸载并重装所有Visual C++运行时库,均无法解决问题
需求
该版本Firefox用于公司老旧业务系统,此前可正常运行,近期突然崩溃。急需解决如何让Visual Studio正确关联源码,显示崩溃时Firefox侧的调用函数及传入参数,以定位具体触发问题的代码逻辑。
内容的提问来源于stack exchange,提问作者LimetaPeta
相关产品推荐
相关产品推荐

