2010-09-22 22 views
1

我有一個使用打印機對象打印文件的打印應用程序。在一臺特定的機器上(不是其他機器),這個程序在處理了一些文件(20個左右)後會崩潰。在DoEvents期間VB6程序崩潰,爲什麼?

在DoEvents調用期間,崩潰總是發生。

有沒有人看過類似的東西?

謝謝!

+2

由於DoEvents允許操作系統處理其他事件,由另一個事件產生,可能與打印對象有關? 當您執行DoEvents時,您的打印對象在做什麼? 當DoEvents被調用並且另一個事件拋出一個非託管錯誤時,託管應用程序將崩潰。 在包含DoEvent調用的方法中是否有OnError Goto? 如果不是,你可以添加一個,並檢查錯誤處理程序是否被執行,或者它是否仍然會使應用程序崩潰? 所有隻是猜測我的課程。 – Nope 2010-09-22 08:54:19

+1

你能告訴我們錯誤信息嗎? – MarkJ 2010-09-22 09:11:21

+0

我在調用DoEvents的Sub中有一個OnError GoTo。錯誤處理程序永遠不會執行。 – Stringfellow 2010-09-22 14:10:18

回答

3

我會檢查Dr.Watson和mini轉儲文件,找出究竟是什麼崩潰。在XP這個住在:

C:\ Documents和Settings \所有用戶\應用數據\微軟\華生醫生

在Windows的其他版本,不同的地方。使用程序的pdo(調試符號)將Minidump加載到Visual Studio的現代版本中,並且應該對崩潰的內容有個很好的概念。如果您還沒有製作符號化調試信息,請使用該信息進行構建。此外,請確保您正在編譯爲本機代碼,而不是P代碼(有時P代碼崩潰,您無法弄清楚原因)...

+0

謝謝,克里斯。到目前爲止,我只有一個崩潰文件中的一個小型轉儲文件,而這個文件來自程序中沒有符號調試信息的版本。儘管如此,我仍然會嘗試將它加載到VS中,看看發生了什麼。我正在編譯成本地代碼。 – Stringfellow 2010-09-22 22:39:32

+0

當你必須這樣做的時候總是很痛苦,但是我從經驗中學到的總是創建一個PDB並將其放入你的版本控制中。我們遇到了一些奇怪的問題,例如應用程序只能與德語版的Windows XP等類似的應用程序崩潰,並且唯一的辦法是找出舊的可靠的小型轉儲程序(這並不總是可靠的)。在沃森博士中您還可以選擇在客戶端打開選項, – 2010-09-23 21:53:20