2010-07-30 555 views
3

是否可以在Visual Basic 6.0中獲取堆棧跟蹤信息?我的意思是我想找出導致類似於.NET堆棧跟蹤的錯誤的函數名稱和確切的行。我創建了一個在我的測試環境中工作正常的ActiveX DLL,但它在生產環境中引發錯誤(錯誤:91-對象變量或未設置塊變量)。任何幫助,非常感謝。VB6中的堆棧跟蹤

+2

這是」是否可以在VB6中以編程方式檢索調用堆棧「的精確副本http:// stackoverflow.com/questions/127645/is-it-possible-to-retrieve-the-call-stack-programmatically-in-vb6。我投票關閉 – MarkJ 2010-07-30 07:54:34

+0

可能重複的[是否有可能以編程方式檢索調用堆棧VB6?](https://stackoverflow.com/questions/127645/is-it-possible-to-retrieve-the-call-stack-programmatically-in-vb6) – DaveInCaz 2018-01-29 16:53:56

回答

0

你可能無法在VB6中獲得。 previous question
Err object獲取更多信息。

+0

我用MZTools在代碼中插入行號,然後使用Erl函數獲取導致錯誤的行號 – Kannabiran 2010-08-18 05:50:46

1

VB6似乎並不有一個體面的方式來做到這一點本身。

這有點麻煩,但是您可以將自定義解決方案組合在一起,以便在需要時將文本文件添加到文本文件中。手動

Public Sub LogCall(message as String) 
    Open "c:\My Documents\sample.txt" For Output As #1 
    Print #1, message 
    Close #1 
End Sub 

,然後從自己的函數

LogCall "MyFunction: Line 42" 

它並沒有解決問題調用它,但它可能會幫助你縮小範圍:把一個方法的地方,看起來是這樣的。

關於你的具體錯誤,我會通過並檢查你將一個對象分配給一個變量的情況 - 我發現很容易忘記Set關鍵字,並且當我至少期望它時得到完全相同的錯誤。

4

This是一個很好的方法來做到這一點 - 對現有的重複問題的答案。使用MZTools插入錯誤處理程序自動


或者,您可以調試使用WinDBG,從微軟免費的獨立調試器的生產環境中的內置的DLL。使用符號將您的DLL編譯爲本地代碼(創建PDB文件)。

這是微軟一位關於使用Windbg與VB6和2004 blog post由另一個微軟傢伙簡要介紹Windbg的2006 blog post

1

我這樣做的首選方法是HuntERR;它處於許可許可下,因此可以在任何項目中使用而不受懲罰。

http://www.devx.com/vb2themax/Tip/19792

這是VB6,你關心包括允許在儘可能多的信息完整的堆棧跟蹤一個優秀的靜態庫。

從IDE中的某些自動化插入錯誤處理程序和行號可以獲得巨大的好處。

作爲鏈接的存檔有一些額外的,我不熟悉的,包括什麼似乎是一個VB6的IDE插件 - 我將被添加到我的VB6套件收藏。

這個圖書館可以從字面上把你從「HUH?「具有全行編號的堆棧跟蹤,它使VB6在正確使用時具有專業級別的錯誤處理能力。