Board logo

标题: [基础] 如何调试 ActiveX DLL ? [打印本页]

作者: wshzw    时间: 2008-7-27 13:02     标题: 如何调试 ActiveX DLL ?

一般用“逐语句”运行调试代码时,当前执行 行 会有黄色的背景色,可以逐行检查问题所在。如图:

但在调试 ActiveX DLL 的代码时,却没有当前执行行的黄色背景色,不知道当前执行到哪一行,怎么检查问题出现在哪一行?
请教各位,谢谢!

[ 本帖最后由 wshzw 于 2008-7-27 13:09 编辑 ]

图片附件: 逐步运行.jpg (2008-7-27 13:02, 3.95 KB) / 该附件被下载次数 471
http://bbs.lihuasoft.net/attachment.php?aid=1552


作者: Nothing    时间: 2008-7-28 09:26

Activex DLL不能这样调试,因为必需别的程序调用的时候才执行。
你可以在启始的语句设置断点,当别的程序调用时,VB会在断点处停下来,这时你可以按F8一句一句的执行。
作者: wshzw    时间: 2008-7-28 16:53

谢谢回复!
但是比如用 Excel 作为 Test.dll 的宿主程序,如果 Test.dll 尚未被编译,还不能应用于 Excel,如果 Test.dll 已被编译,只能在 Excel 的代码中设置断点,看不到 *.dll 中有病的语句……
我对 VB 太不了解,还不能明白如何调试 *.dll 中的病句,应该是在*.dll中调试,还是在宿主程序中调试?
我还纳闷着:在宿主程序中无法调试到 *.dll 内部的代码…在编写 *.dll 时又不能调试…?
请再指点,谢谢!
作者: wshzw    时间: 2008-7-28 17:12

以附件中的 Test.xls 调用 Test.dll 为例,如何能检查出下面第五行的代码有问题?
Test.rar (13.11 KB)
Sub WriteMe()
   With mxlApp
      .ActiveCell = .ActiveWorkbook.Name
      .ActiveCell(2) = .ActiveSheet.Name
'      .Sheets(5).Cells(1, 1) = "不存在"  '因工作簿中只有3页,所以当前行的代码有问题
   End With
   MsgBox "假如 *.DLL 中的当前行有问题,调试成了难题……"
End Sub

附件: Test.rar (2008-7-28 17:12, 13.11 KB) / 该附件被下载次数 460
http://bbs.lihuasoft.net/attachment.php?aid=1553
作者: Nothing    时间: 2008-7-29 16:03

DLL调试是一个难题,你可以用VB的调试器调试,如果想用Excel调试,当然没戏。
作者: wshzw    时间: 2008-7-29 18:12

谢谢!原来 DLL 本来就不易调试。
请问“VB的调试器”是 VB 自带的呢,还是另外的一个软件?
作者: Nothing    时间: 2008-7-29 22:35

VB本身自带的,你直接运行DLL,会出一个调试选择的对话框,你仔细看看就知道了。
作者: wshzw    时间: 2008-7-31 13:11

谢谢回复!
我在DLL尚未编译的情况下,按[F5]或[F8]键运行DLL,都没出现调试选择的对话框,那是因为我操作得疏漏或是VB尚未成为我的朋友……
我是否可以先将工程类型由DLL改为EXE,调试完成后再将工程类型改回来?
作者: Nothing    时间: 2008-7-31 23:14

当然可以
还可以建一个工程组,里面包括DLL工程和一个测试的程序




欢迎光临 编程开发论坛 (http://bbs.lihuasoft.net/) Powered by Discuz! 6.0.0