2009-11-02 21 views
6

我對開發人員將哪些有用的東西放入可以嵌入到小型轉儲中的用戶流數據結構感興趣。 MSDN描述了用於MiniDumpWriteDump參數爲這樣:將小部件的用戶流段放入的有用東西

PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam

和描述了參數正是如此:

UserStreamParam [in]指向MINIDUMP_USER_STREAM_INFORMATION結構的陣列。如果此參數的值爲NULL,則小型轉儲文件中不會包含用戶定義的信息。

我正在考慮在用戶流嵌入我的程序的最後ñ日誌行,因爲測試人員往往不與所有錯誤發送的正確格式的日誌,所有的時間。

此外,我可以把硬件規格(內存,CPU,視頻等)在該部分。

還有人用過用戶流段嗎?

+0

我認爲這個問題屬於「我們能在這個問題上能做些什麼」以及更多的「調試我的程序實際需要什麼?」。 – 2009-11-21 22:00:12

+0

然後你同意這是一個前瞻性的問題。通過提供最大的診斷信息,您可以調試將來遇到的案例。 因此,這個問題。 :) 請記住,調試轉儲是由第三方(包括客戶)生成的。儘可能多地瞭解應用程序崩潰時的環境對於跟蹤問題至關重要。 – 2009-11-22 23:08:29

回答

3

我喜歡你的想法,包括歷史日誌信息。但是,如果爲了響應某種類型的異常而生成minidump,似乎停止讀取日誌文件以包含在轉儲中可能並不總是最好的計劃,因爲系統的穩定性可能有問題。

我們的默認類型是MiniDumpWithFullMemory。在這種情況下,用戶流信息在我們的應用程序中似乎不是特別有用,因爲完整的內存包含我們需要的幾乎所有可能的信息(至少目前爲止)。當人們向我們發送轉儲文件時,我們也獲得了所有錯誤日誌文件的運氣。

但是,我們的用戶可以使用配置參數更改類型。我可以看到,使用其中一種較小的轉儲類型,用戶流信息可能非常有用。在我看到這篇文章之前,我從來沒有對minidump函數的參數給出過任何真正的想法。我們在內存中有一些基本配置信息的結構,在沒有產生完整內存轉儲的情況下,這些結構是無價的。而且,包含用戶的「引發」異常的細節的結構將很方便。我將不得不考慮添加其中的一些作爲用戶流被丟棄。

1

在這裏填寫更多信息可能比用WerRegisterFile生成的日誌文件更有用。

1

Breakpad庫爲某些bookkeeping information使用用戶流。它包含一個具有專用線程的線程ID的流,該線程用於執行小型轉儲寫入,以便可以從堆棧跟蹤中排除它。如果轉儲是爲響應非致命回調而編寫的,例如CRT的無效參數處理程序或純虛擬調用處理程序,則它還包含帶有斷言信息的流。

相關問題