关于调试 VB 组件的建议?
我对 VB 代码没有任何经验。但我确实知道我的 VB 应用程序有问题,该应用程序挂在他的 ocx 中。我可以在windbg中看到它一遍又一遍地抛出c000008f异常,我知道这只是VB异常处理,它与“浮点不精确结果”硬件异常无关(这只是微软的“辉煌” ' 的实现方式)。
那么,问题来了。我如何找出问题的真正所在?我这里没有安装 Visual Studio,但我的笔记本电脑上安装了 VS 2010 Express。不过,我认为这也行不通,我需要专业版来调试此类内容。
另外,我启用了问题应用程序的日志记录,这些是我得到的最后几行:
........................ (布拉布拉布拉) .............
[COVEControls] [00204] [00008.912] <- slbChart.ctl : 子 AddItem : (Label=DataObjs, Value=0, Color=, LabelColor=) : [res = 22%,mem = 2147483647]
[COVEControls] [00205] [00008.912] -> slbChart.ctl : 子 AddItem : (Label=Conts, Value=1, Color=, LabelColor=) : [res = 22%, mem = 2147483647]
[COVEControls] [00206] [00008.912] -> slbChart.ctl : 子 LayoutChart : () : [res = 22%, mem = 2147483647]
[COVEControls] [00207] [00008.912] <- slbChart.ctl : 子 LayoutChart : () : [res = 22%, mem = 2147483647]
[COVEControls] [00208] [00008.912] <- slbChart.ctl : Sub AddItem : (Label=Conts, Value=1, Color=, LabelColor=) : [res = 22%, mem = 2147483647]
[Cove] [00116][00009.026]-> frmMain.frm : Sub COVE1_StatusMsg : (statMsg=获取卡信息(读取总数据空间和可用数据空间)) : [res = 22%, mem = 2147483647]
[Cove] [00117] [00009.026] <- frmMain.frm : Sub COVE1_StatusMsg : (statMsg=获取卡信息(读取总数据空间和可用数据空间)) : [res = 22%, mem = 2147483647]
[COVEControls] [00209] [00008.948] <- COVE.ctl : Sub SetSizeBars : () : [res = 22%,mem = 2147483647]
[COVEControls] [00210] [00008.949] -> COVE.ctl:子DrawPie:(pic =,shp0 =,shp1 =,pctFree = 0.9222):[res = 22%,mem = 2147483647]
[COVEControls] [00211] [00008.950] - > COVE.ctl : 子 DrawLayer : (pic=, shp=, pct=7.779998E-02, color1=32768, color2=128) : [res = 22%, mem = 2147483647]
[COVEControls] [00212] [00008.950] < ;- COVE.ctl : 子 DrawLayer : (pic=, shp=, pct=7.779998E-02, color1=32768, color2=128) : [res = 22%, mem = 2147483647]
[COVEControls] [00213] [00008.950 ]-> COVE.ctl : 子 DrawLayer : (pic=, shp=, pct=7.779998E-02, color1=32768, color2=128) : [res = 22%, mem = 2147483647]
[COVEControls] [00214] [00008.950] < ;- COVE.ctl : 子 DrawLayer : (pic=, shp=, pct=7.779998E-02, color1=32768, color2=128) : [res = 22%, mem = 2147483647]
[COVEControls] [00215] [00008.950 ]-> COVE.ctl : 子 DrawLayer : (pic=, shp=, pct=7.779998E-02, color1=32768, color2=128) : [res = 22%, mem = 2147483647]
[COVEControls] [00216] [00008.950] < ;- COVE.ctl : Sub DrawLayer : (pic=, shp=, pct=7.779998E-02, color1=32768, color2=128) : [res = 22%, mem = 2147483647]
....
它只是重复DrawLayer 无穷无尽。使应用程序崩溃的功能成功,您可以看到检索到的数据几秒钟,然后它停止更新客户区并变成白色,鼠标指针仍然是沙漏,应用程序没有响应,在强制它之后关闭它在报告详细信息中说:“hungapp”
那么,有人知道如何找出它是如何失败的吗?我真的需要 Visual Studio Pro ftw 吗? (哦)'
I don't have any experience with VB code. But I do know I have a problem with a VB app which hangs in a ocx of his. I can see in windbg that it throws the c000008f exception over and over again and i know that it's just the VB exception handling and it has nothing to do with the "Floating Point In-exact Result" hardware exception (it was just Microsoft's 'brilliant' way of implementing it).
So, the problem. How do I find out what the problem really is ? I don't have Visual Studio installed here, but I do have on my laptop VS 2010 Express installed. Still, I don't think that will work either, i need the Pro version to debug this kind of stuff.
Also, I enabled logging in the problem app and these are the last lines I get:
.............
(bla bla bla)
.............
[COVEControls] [00204] [00008.912] <- slbChart.ctl : Sub AddItem : (Label=DataObjs, Value=0, Color=, LabelColor=) : [res = 22%, mem = 2147483647]
[COVEControls] [00205] [00008.912] -> slbChart.ctl : Sub AddItem : (Label=Conts, Value=1, Color=, LabelColor=) : [res = 22%, mem = 2147483647]
[COVEControls] [00206] [00008.912] -> slbChart.ctl : Sub LayoutChart : () : [res = 22%, mem = 2147483647]
[COVEControls] [00207] [00008.912] <- slbChart.ctl : Sub LayoutChart : () : [res = 22%, mem = 2147483647]
[COVEControls] [00208] [00008.912] <- slbChart.ctl : Sub AddItem : (Label=Conts, Value=1, Color=, LabelColor=) : [res = 22%, mem = 2147483647]
[Cove] [00116] [00009.026] -> frmMain.frm : Sub COVE1_StatusMsg : (statMsg=Getting Card Information (reading total and free data space)) : [res = 22%, mem = 2147483647]
[Cove] [00117] [00009.026] <- frmMain.frm : Sub COVE1_StatusMsg : (statMsg=Getting Card Information (reading total and free data space)) : [res = 22%, mem = 2147483647]
[COVEControls] [00209] [00008.948] <- COVE.ctl : Sub SetSizeBars : () : [res = 22%, mem = 2147483647]
[COVEControls] [00210] [00008.949] -> COVE.ctl : Sub DrawPie : (pic=, shp0=, shp1=, pctFree=0.9222) : [res = 22%, mem = 2147483647]
[COVEControls] [00211] [00008.950] -> COVE.ctl : Sub DrawLayer : (pic=, shp=, pct=7.779998E-02, color1=32768, color2=128) : [res = 22%, mem = 2147483647]
[COVEControls] [00212] [00008.950] <- COVE.ctl : Sub DrawLayer : (pic=, shp=, pct=7.779998E-02, color1=32768, color2=128) : [res = 22%, mem = 2147483647]
[COVEControls] [00213] [00008.950] -> COVE.ctl : Sub DrawLayer : (pic=, shp=, pct=7.779998E-02, color1=32768, color2=128) : [res = 22%, mem = 2147483647]
[COVEControls] [00214] [00008.950] <- COVE.ctl : Sub DrawLayer : (pic=, shp=, pct=7.779998E-02, color1=32768, color2=128) : [res = 22%, mem = 2147483647]
[COVEControls] [00215] [00008.950] -> COVE.ctl : Sub DrawLayer : (pic=, shp=, pct=7.779998E-02, color1=32768, color2=128) : [res = 22%, mem = 2147483647]
[COVEControls] [00216] [00008.950] <- COVE.ctl : Sub DrawLayer : (pic=, shp=, pct=7.779998E-02, color1=32768, color2=128) : [res = 22%, mem = 2147483647]
....
And it's just repeating DrawLayer ad infinitum. The function which crashes the app succeeds, you can catch a glimpse of the retrieved data for a few secs, then it stops updating the client area and turns to white, mouse pointer is still a hourglass, the app is nonresponsive, after forcing it to close it says in the report details: "hungapp"
So, anyone has a clue of how to find out how it fails ? Do I really need Visual Studio Pro ftw ? (o.o)'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
.ocx、.ctl 和 .frm 扩展名都是 vb6/Visual Studio 6 的产物。您将无法使用当前安装的 Express Edition 编辑此项目,并且您将无法购买当前的“ Pro”来解决这个问题。 Visual Studio 6 不再在任何地方出售。
The .ocx, .ctl, and .frm extensions are all artifacts of vb6/Visual Studio 6. You won't be able to edit this project with the Express Edition currently installed, and you won't be able to buy a current "Pro" to fix this. Visual Studio 6 is no longer available for sale anywhere.
该异常代码由 VB6 内部使用。这是设计使然。
模式信息在这里:
信息:Visual Basic 使用异常代码 0xC000008F 作为内部异常代码
老式调试 - VB6 中间件应用程序 - c000008f
您是否知道您已抛出超过 40,000 个过去 3 小时内有异常情况吗?
This exception code is used internally by VB6. This is by design.
Mode info here :
INFO: Visual Basic Uses Exception Code 0xC000008F as Internal Exception Code
Old school debugging - VB6 middleware applications - c000008f
Are you aware that you have thrown over 40,000 exceptions in the last 3 hours?