2011-09-04 45 views
3

這真的讓我發瘋。我使用WinDbg作爲我的主調試器。 它用於調試本地服務(本地運行WinDbg,在同一臺機器上調試服務)。 PDB文件存儲在本地硬盤上。 源代碼通過SMB共享訪問。WinDbg在調試本地進程時速度慢(step over)

調試工作在突發狀態,有時它流動良好,大部分時間我總是看到令人難以置信的惱人的「* BUSY *」消息,幾乎每次我執行「跳過」時都會發生這種情況。

任何想法,我可以做什麼來加快速度?

感謝

+0

我不知道,但我會使用進程監視器,看看是否WinDbg的是忙着做一些IO在凍結時工作。如果是這樣,那可能是問題根源的一個很好的暗示。另外,如果您從Microsoft的服務器獲得PBD,請嘗試禁用它。如果由於某些原因,WinDbg無法在本地保存PBD,那麼它可能會每次都訪問服務器。 – eran

+0

檢查您是否有過多數量的BP同時活動;另外,啓用符號的嘈雜模式來檢查您是否實際上只引用了本地符號 – deemok

+0

您是否設置了符號路徑環境變量?如果是的話WinDbg會使用它。從微軟獲得PDB可能會大大減慢速度。 –

回答

0

這通常發生在我身上時,多個工具窗口(當地人,手錶,調用堆棧)被打開。如果這些窗口打開,WinDbg將花費週期在每個「逐步」命令上使用慢速符號查找來更新所有這些窗口。

在這方面只使用命令行(ntsd)調試器要快得多。

0

如果它正在慢慢從互聯網上拖動Windows符號文件,請考慮將它們全部下載到您的硬盤驅動器並將WinDbg指向它們的位置。最好在本地驅動器上安裝服務的符號文件和源文件。

1

如果您有許多跟蹤保存在工作區中的模塊加載事件(通過bu創建)的非限定斷點,可能會發生這種情況。
也值得去檢查網絡連接和本地符號高速緩存大小

0

幾件事情嘗試:

  • 使用!sym noisy命令顯示對WinDbg中所引用的圖片和PDBS更多詳細信息。您可能會看到它訪問網絡超過您期望,或網絡服務器不可用,並且請求超時
  • 確保您的符號路徑已經得到了cache in it
  • 採取的源副本本地和添加到源路徑
0

代替使用「步驟-上方」的,設置一個斷點上的下一個命令,或甚至硬件斷點(使用BA)

1

我有完全相同的問題,並通過調整符號選項可以看到一個很大的改進。具體來說,SYMOPT_NO_PUBLICS選項似乎是最重要的,但我調整了一些其他相關選項。我做了以下...

.symopt,爲0x4 .symopt + 0x100的 .symopt +爲0x8000 .symopt-0x10000的

...這就是:

-SYMOPT_DEFERRED_LOADS + SYMOPT_NO_UNQUALIFIED_LOADS + SYMOPT_NO_PUBLICS -SYMOPT_AUTO_PUBLICS

畢竟是,我有一個0x80028333位symopt掩碼值,這是我現在作爲一個WinDbg的命令行選項一起使用,如:

WINDBG.EXE -sflags 0x80028333

我還沒有發現,如果有任何缺點這種方法。也許在某些情況下,使用SYMOPT_NO_PUBLICS會導致信息丟失,但迄今爲止它對我來說運行良好,而且速度肯定會更快。

WinDbg Symbol Options MS Documentation

相關問題