VB6调试-编译

VB6 Debugging - compiled

我的情况是我在我工作的地方支持一个 VB6 应用程序,在过去的几周里,它开始比以往任何时候都更频繁地崩溃。它使用本地 Access MDB 数据库和远程 SQL 服务器数据库来进行不同类型的存储。好消息是我们正在编写一个替代应用程序,乐队新闻我需要同时支持这个,供应商早已离开这个世界。

我可以通过哪些方法来尝试诊断导致崩溃的原因?例如,到目前为止,我已经在客户端 PC 上尝试过 ODBC 跟踪(对于 MDB 组件)、SQL Profiler 跟踪和 ProcMon。

还有什么我可以尝试发现应用程序在崩溃时试图做什么吗?

您也可以在调试器中启动。

windbg 或 ntsd(ntsd 是一个控制台程序,可能已安装)。两者也来自 Debugging Tools For Windows.

下载并安装 Windows

的调试工具

http://msdn.microsoft.com/en-us/windows/hardware/hh852363

安装 Windows SDK,但只需选择调试工具。

在 C:\

中创建一个名为 Symbols 的文件夹

启动 Windbg。文件菜单-符号文件路径并输入

srv*C:\symbols*http://msdl.microsoft.com/download/symbols

然后

windbg -o -g -G c:\windows\system32\cmd.exe /k batfile.bat

您可以按 F12 停止它,kb 将显示调用堆栈(g 继续程序)。如果有错误,它也会停止并显示它们。

键入 lm 列出加载的模块,键入 x *!* 列出符号,键入 bp symbolname 设置断点

使用 db address(如 db 01244 以查看内存中的内容。

如果在 VB6 中编程,那么此环境变量 link=/pdb:none 将符号存储在 dll 中而不是单独的文件中。确保使用无优化编译程序并勾选创建符号调试信息框。两者都在项目属性的“编译”选项卡上。