簡體   English   中英

在 Visual Studio 中逐步調試期間自動跳過 STL 函數

[英]Auto-skip STL functions during step-by-step debugging in Visual Studio

在逐步調試期間,我經常使用“step into”在我正在調試的部分中的每一行處暫停,以查看我執行的所有代碼。

但是庫調用可能會破壞這個工作流程:調試器將跳轉到某個 STL 文件並在那里繼續。 然后我必須按“跳出”才能回到我自己的代碼。

有沒有辦法阻止調試器打開 STL 源文件? 黑名單或某處的設置? 我使用本機 C++ 代碼。 不幸的是,“僅我的代碼”調試器設置僅適用於托管代碼。

好問題,調試器在調試過程中不斷跳入一切確實是一個巨大的減速和分心。 幸運的是有一個解決方案:

打開您的注冊表編輯器,導航到

HKLM\SOFTWARE\Microsoft\VisualStudio\10.0\NativeDE\StepOver

(如果您使用的是 64 位機器,請在 SOFTWARE 之后添加 \\Wow6432Node,這在過去讓我頭疼)。

添加新的字符串值 (REG_SZ)。 名稱不是那么重要,為了清楚起見,我使用了NoSTL並將其值設置為

std\:\:.*=NoStepInto

這告訴調試器不要進入任何匹配該正則表達式的東西,因此它將跳過 std 命名空間中的每個函數(全局和類級別)。 通過使用StepInto您可以為特定方法添加覆蓋,並且您仍然可以使用斷點。 添加一些您自己的方法也很方便,這些方法經常被使用,但您可以通過頭腦知道結果。

這里有更詳細的解釋,更分散的信息在NoStepInto google。

答案如上所述,但如果您使用 VisualStudio 2017 或它不適合您,請嘗試以下操作:

C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\Common7\\Packages\\Debugger\\Visualizers

使用記事本或任何您擁有的文件打開以下文件:

默認.natjmc

並添加這一行: <Function><Name>std\\:\\:.*</Name><Action>NoStepInto</Action></Function> 'name' 表示該文件中注冊表項的值,'行動”是不言自明的。

如果你也想添加注冊表項(不確定是否有必要),那么你會在這里找到它: \\HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\VSTA\\8.0\\NativeDE\\StepOver至少,那是我的情況。 找到這些花了一個小時,所以我希望它會幫助某人。 如上所述,如果您有 32 位機器,請刪除“Wow6432Node”。

你不用F10/F11/Shift+F11??? 那些是“跨過”、“跨入”、“跨出”,還有更多有用的。 比尋找按鈕更有用,而且您永遠不必將目光從源代碼上移開。

通常,在 Visual Studio 中使用鍵盤快捷鍵而不是鼠標可以很好地為您服務。 不只是為了調試,而是為了一切。 學習它們,你會愛上它們的! 您可能無法一次全部學習它們,只需選擇一些您經常使用的功能,習慣它們,然后開始不同的設置。 隨着時間的推移,它成為第二天性。

對不起,這是題外話,但你原來的問題已經被上一張海報精美地回答了,我想我會幫忙做點別的:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM