Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A WinDbg és más Windows hibakeresők feltételes töréspontjai akkor hasznosak, ha a programnak csak egy adott feltétel teljesülése esetén kell megállnia.
A rendszer létrehoz egy feltételes töréspontot a "/w" paraméterrel a bp (Breakpoint beállítása) vagy más töréspont-parancs számára. A parancs alapszintaxisa:
0:000> bp /w "(Condition)" Address
A töréspont csak akkor okoz törést a hibakeresőben, ha a megadott feltétel igaz. A "w" a "mikor" rövidítése. A feltételkifejezés bármi lehet, amely használható a dx (Display Debugger Object Model Expression) paranccsal. Ez magában foglalja a legtöbb C++ stíluskifejezést, beleértve az összehasonlításokat, az aritmetikai, a mutatóműveleteket és másokat. Például egy alapszintű feltételes töréspont, amely csak akkor törik meg, ha egy változó 20-nál több, a következőképpen írható:
0:000> bp /w "MyVar > 20" `mysource.cpp:143`
Mivel a feltétel kiértékelése a hibakereső objektummodellel történik, a NatVis-támogatáshoz hasonló lehetőségeket is kihasználhat. Például, ha feltételezzük, hogy a myVec egy std::vector<int>, létrehozhat egy olyan feltételt, mint például:
0:000> bp /w "myVec.Count() == 4" `mysource.cpp:143`
Ez hibát okoz, amikor a mysource.cpp 143. sora fut, és a myVec változó 4 elemből áll.
A Natvison kívül JavaScript-függvényeket is meghívhat. Ha egy szkriptet a WinDbg szkriptablakával vagy a "myFunc" nevű függvényt tartalmazó .scriptload (Load Script) paranccsal tölt be, az alábbihoz hasonló töréspontot állíthat be:
0:000> bp /w "@$scriptContents.myFunc()" `mysource.cpp:143`
További információ a JavaScript-függvények és -bővítmények hibakeresőben való írásáról: JavaScript Debugger Scripting
Bár a magasabb szintű kifejezések általában a leg hasznosak, a regiszterek kiértékelése is lehetséges ezekkel a kifejezésekkel. Létrehozhat például egy töréspontot, amely csak akkor aktiválódik, ha a veremmutató eléri a küszöbértéket:
0:000> bp /w "@esp < 0x6ff9f8" `mysource.cpp:143`
Örökölt feltételes töréspont szintaxisa
Mielőtt a "/w" paraméter elérhető lett volna a töréspont-parancsokhoz, a feltételes töréspontok beállításának ajánlott módja a j (Execute If - Else) parancs vagy a .if jogkivonat, majd a gc (Ugrás a feltételes töréspontról) parancs használata volt. Bár a feltételes töréspontok beállításának ezen módszerei már nem ajánlottak, továbbra is működnek, és más forrásokban is hivatkozhat erre a szintaxisra.
A j parancsot használó feltételes töréspontok alapszintaxisa a következő:
0:000> bp Address "j (Condition) 'OptionalCommands'; 'gc' "
A .if token használatával feltételes töréspontok alapszintaxisa a következő:
0:000> bp Address ".if (Condition) {OptionalCommands} .else {gc}"