使用VStudio 2010和C#設置VStudio斷點對象實例
我有一個叫哺乳動物類。狗和貓繼承了哺乳動物。
然而,一隻特定的狗正在嘔吐,我需要找出原因。
我想在哺乳動物類中設置斷點 - 但只有當Dog類正在執行並將Mammal作爲基類調用時。我有很多狗和貓的實例 - 我正在尋找爲狗的特定實例設置斷點 - 稱爲Fido。
希望這是有道理的。這可能嗎?我看不出有條件的斷點如何幫助我做到這一點。
感謝
使用VStudio 2010和C#設置VStudio斷點對象實例
我有一個叫哺乳動物類。狗和貓繼承了哺乳動物。
然而,一隻特定的狗正在嘔吐,我需要找出原因。
我想在哺乳動物類中設置斷點 - 但只有當Dog類正在執行並將Mammal作爲基類調用時。我有很多狗和貓的實例 - 我正在尋找爲狗的特定實例設置斷點 - 稱爲Fido。
希望這是有道理的。這可能嗎?我看不出有條件的斷點如何幫助我做到這一點。
感謝
您可以使用Condition
上BreakPoint
實現這一目標。 Breakpoint
只會打,當你進入Condition
是真的
請參見本教程How to: Specify a Breakpoint Condition
您可以使用條件this is Dog && this.Name == "Fido"
使用條件斷點,其中
this is Dog && (this as Dog).Name == "Fido"
或只是'(這是狗)' –
@Mavrinsky更新,謝謝。 –
爲什麼不使用'((Dog)this).Name'? Imho要麼確定它是'Dog'類型並且使用普通的cast,要麼使用'as'並且首先檢查'null'。 –
也有人建議有條件的破發點但是我總是發現它們會隨着調試器評估條件而減慢調試速度。我通常做到以下幾點: -
在你的基類中添加:
#if DEBUG
BreakOnParticularPet();
#endif
,無論你想阻止該程序,然後添加:
void BreakOnParticularPet()
{
if (this pet is the one we're interested in) // pseudocode
{
System.Diagnostics.Debugger.Break();
}
}
您也可以在Break方法的頂部添加'[Conditional(「DEBUG」)]'。然而,我自己不會加入這種方法的大粉絲。 –
@PatrickHuizinga:我不知道那個屬性。涼。每天學些新東西。 – Skizz
爲什麼不條件斷點幫助嗎? – madd0
Fido是名字和名字在哺乳動物類?如果是的話,使用條件斷點,如果不顯示類,你有 – Reniuz