Weboldal keresés

Parancsfájlok hibakeresése a Windows PowerShell ISE-ben


Ez a cikk leírja, hogyan lehet parancsfájlokat hibakeresni helyi számítógépen a Windows PowerShell Integrated Scripting Environment (ISE) vizuális hibakeresési szolgáltatásaival.

A töréspontok kezelése

A töréspont egy kijelölt hely a szkriptben, ahol a műveletet szüneteltetni szeretné, hogy megvizsgálhassa a változók aktuális állapotát és azt a környezetet, amelyben a szkript fut. Miután a szkriptet szünetelteti egy töréspont, parancsokat futtathat a konzolpanelen, hogy megvizsgálja a szkript állapotát. Változókat adhat ki, vagy más parancsokat is futtathat. Még az aktuálisan futó szkript környezetében látható változók értékét is módosíthatja. Miután megvizsgálta, mit szeretne látni, folytathatja a szkript működését.

Háromféle töréspontot állíthat be a Windows PowerShell hibakereső környezetben:

  1. Vonaltörési pont. A szkript leáll, amikor a parancsfájl működése közben eléri a kijelölt sort

  2. Változó töréspontja. A szkript leáll, amikor a kijelölt változó értéke megváltozik.

  3. Parancstöréspont. A szkript minden alkalommal szünetel, amikor a kijelölt parancs lefutni készül a szkript működése közben. Tartalmazhat olyan paramétereket, amelyek tovább szűrik a töréspontot csak a kívánt műveletre. A parancs lehet egy Ön által létrehozott függvény is.

Ezek közül a Windows PowerShell ISE hibakereső környezetben csak sortöréspontok állíthatók be a menü vagy a billentyűparancsok segítségével. A másik két törésponttípus beállítható, de ezek a konzolpanelből, a Set-PSBreakpoint parancsmag segítségével állíthatók be. Ez a szakasz leírja, hogyan hajthat végre hibakeresési feladatokat a Windows PowerShell ISE rendszerben a menük használatával, ahol elérhető, és hogyan hajthat végre parancsokat a konzolpanelből parancsfájlok használatával.

Töréspont beállításához

A töréspontot csak a mentés után lehet beállítani a szkriptben. Kattintson a jobb gombbal arra a vonalra, ahol vonaltöréspontot szeretne beállítani, majd kattintson a Törtéspont átváltása lehetőségre. Vagy kattintson arra a sorra, ahol vonaltöréspontot szeretne beállítani, és nyomja meg az F9 billentyűt, vagy a Hibakeresés menüben kattintson a Váltáspont töréspontra lehetőségre.

A következő szkript egy példa arra, hogyan állíthat be változó töréspontot a konzolpanelből a Set-PSBreakpoint parancsmag használatával.

# This command sets a breakpoint on the Server variable in the Sample.ps1 script.
Set-PSBreakpoint -Script sample.ps1 -Variable Server

Sorolja fel az összes töréspontot

Megjeleníti az összes töréspontot az aktuális Windows PowerShell-munkamenetben.

A Debug menüben kattintson a List Breakpoints lehetőségre. A következő szkript egy példa arra, hogyan listázhatja ki az összes töréspontot a konzolpanelből a Get-PSBreakpoint parancsmag használatával.

# This command lists all breakpoints in the current session.
Get-PSBreakpoint

Töréspont eltávolítása

A töréspont eltávolítása törli azt.

Ha úgy gondolja, hogy később újra szeretné használni, fontolja meg inkább a töréspont letiltását. Kattintson a jobb gombbal arra a sorra, ahonnan el szeretne távolítani egy töréspontot, majd kattintson a ToggleBreakpoint lehetőségre. Vagy kattintson arra a sorra, ahonnan el szeretne távolítani egy töréspontot, és a Hibakeresés menüben kattintson a Váltás töréspontra lehetőségre. A következő szkript egy példa arra, hogyan távolíthat el egy meghatározott azonosítójú töréspontot a konzolpanelből a Remove-PSBreakpoint parancsmag használatával.

# This command deletes the breakpoint with breakpoint ID 2.
Remove-PSBreakpoint -Id 2

Távolítsa el az összes töréspontot

Az aktuális munkamenetben meghatározott összes töréspont eltávolításához a Hibakeresés menüben kattintson az Összes töréspont eltávolítása lehetőségre.

A következő szkript egy példa arra, hogyan távolíthat el minden töréspontot a konzolpanelről a Remove-PSBreakpoint parancsmag használatával.

# This command deletes all of the breakpoints in the current session.
Get-PSBreakpoint | Remove-PSBreakpoint

Töréspont letiltása

A töréspont letiltása nem távolítja el azt. Kikapcsolja, amíg nem engedélyezi. Egy adott vonal töréspontjának letiltásához kattintson jobb gombbal arra a vonalra, ahol le szeretné tiltani a töréspontot, majd kattintson a Szünetpont letiltása lehetőségre.

Vagy kattintson arra a sorra, ahol le szeretne tiltani egy töréspontot, és nyomja meg az F9 billentyűt, vagy a Hibakeresés menüben kattintson a Szünetpont letiltása lehetőségre. A következő szkript egy példa arra, hogyan távolíthat el egy meghatározott azonosítójú töréspontot a konzolpanelből a Disable-PSBreakpoint parancsmag segítségével.

# This command disables the breakpoint with breakpoint ID 0.
Disable-PSBreakpoint -Id 0

Minden töréspont letiltása

A töréspont letiltása nem távolítja el azt; kikapcsolja, amíg nem engedélyezi. Az aktuális munkamenet összes töréspontjának letiltásához a Hibakeresés menüben kattintson az Összes töréspont letiltása lehetőségre. A következő szkript egy példa arra, hogyan tilthatja le az összes töréspontot a konzolpanelről a Disable-PSBreakpoint parancsmag használatával.

# This command disables all breakpoints in the current session.
# You can abbreviate this command as: "gbp | dbp".
Get-PSBreakpoint | Disable-PSBreakpoint

Töréspont engedélyezése

Egy adott töréspont engedélyezéséhez kattintson a jobb gombbal arra a sorra, ahol engedélyezni kíván egy töréspontot, majd kattintson a Szünetpont engedélyezése lehetőségre. Vagy kattintson arra a sorra, ahol engedélyezni kíván egy töréspontot, majd nyomja meg az F9 billentyűt, vagy a Hibakeresés menüben kattintson a Szünetpont engedélyezése lehetőségre. A következő szkript egy példa arra, hogyan engedélyezhet bizonyos töréspontokat a konzolpanelből az Enable-PSBreakpoint parancsmag használatával.

# This command enables breakpoints with breakpoint IDs 0, 1, and 5.
Enable-PSBreakpoint -Id 0, 1, 5

Minden töréspont engedélyezése

Az aktuális munkamenetben meghatározott összes töréspont engedélyezéséhez a Hibakeresés menüben kattintson az Összes töréspont engedélyezése lehetőségre. A következő szkript egy példa arra, hogyan engedélyezheti az összes töréspontot a konzolpanelből az Enable-PSBreakpoint parancsmag használatával.

# This command enables all breakpoints in the current session.
# You can abbreviate the command by using their aliases: "gbp | ebp".
Get-PSBreakpoint | Enable-PSBreakpoint

A hibakeresési munkamenet kezelése

A hibakeresés megkezdése előtt be kell állítani egy vagy több töréspontot. Nem állíthat be töréspontot, hacsak nincs mentve a hibakeresni kívánt szkript. A töréspont beállításával kapcsolatos útmutatásért lásd: A töréspontok kezelése vagy a Set-PSBreakpoint. A hibakeresés megkezdése után nem szerkesztheti a szkriptet, amíg le nem állítja a hibakeresést. Az egy vagy több törésponttal rendelkező szkript automatikusan mentésre kerül a futtatás előtt.

A hibakeresés megkezdéséhez

Nyomja meg az F5 billentyűt, vagy kattintson az eszköztáron a Szkript futtatása ikonra, vagy a Hibakeresés menüben kattintson a Futtatás/Folytatás lehetőségre. >. A szkript addig fut, amíg az első törésponttal nem találkozik. Ott szünetelteti a működést, és kiemeli azt a sort, amelyen szünetelt.

A hibakeresés folytatásához

Nyomja meg az F5 billentyűt, vagy az eszköztáron kattintson a Szkript futtatása ikonra, vagy a Hibakeresés menüben kattintson a Futtatás/Folytatás gombra., vagy a Konzol ablaktáblába írja be a C parancsot, majd nyomja meg az ENTER billentyűt. Ez azt eredményezi, hogy a szkript a következő töréspontig vagy a szkript végéig fut tovább, ha nem találkozik további töréspontokkal.

A hívásverem megtekintéséhez

A hívási verem megjeleníti az aktuális futási helyet a szkriptben. Ha a szkript olyan függvényben fut, amelyet egy másik függvény hívott meg, akkor azt a kijelzőn további sorok jelzik a kimenetben. A legalsó sorban az eredeti szkript és az a sor látható, amelyben egy függvényt meghívtak. A következő sor mutatja azt a függvényt és azt a sort, amelyben egy másik függvényt meghívhattak volna. A legfelső sor az aktuális sor aktuális környezetét mutatja, amelyen a töréspont be van állítva.

Szüneteltetve az aktuális hívásverem megtekintéséhez nyomja meg a CTRL+SHIFT+D billentyűkombinációt, vagy a Debug menüben. , kattintson a Hívásverem megjelenítése lehetőségre, vagy a konzol ablaktáblába írja be a K kifejezést, majd nyomja meg az ENTER billentyűt.

A hibakeresés leállításához

Nyomja le a SHIFT+F5 billentyűt, vagy a Hibakeresés menüben kattintson a Hibakereső leállítása lehetőségre, vagy a konzolpanelen írja be a Q parancsot, majd nyomja meg az ENTER billentyűt.

Hogyan lépjünk át, lépjünk be és lépjünk ki hibakeresés közben

A léptetés egy utasítás futtatásának folyamata. Megállhat egy kódsoron, és megvizsgálhatja a változók értékeit és a rendszer állapotát. A következő táblázat a gyakori hibakeresési feladatokat írja le, például átlépés, belépés és kilépés.

Debugging Task Description How to accomplish it in PowerShell ISE
Step Into Executes the current statement and then stops at the next statement. If the current statement is a function or script call, then the debugger steps into that function or script, otherwise it stops at the next statement. Press F11 or, on the Debug menu, click Step Into, or in the Console Pane, type S and press ENTER.
Step Over Executes the current statement and then stops at the next statement. If the current statement is a function or script call, then the debugger executes the whole function or script, and it stops at the next statement after the function call. Press F10 or, on the Debug menu, click Step Over, or in the Console Pane, type V and press ENTER.
Step Out Steps out of the current function and up one level if the function is nested. If in the main body, the script is executed to the end, or to the next breakpoint. The skipped statements are executed, but not stepped through. Press SHIFT+F11, or on the Debug menu, click Step Out, or in the Console Pane, type O and press ENTER.
Continue Continues execution to the end, or to the next breakpoint. The skipped functions and invocations are executed, but not stepped through. Press F5 or, on the Debug menu, click Run/Continue, or in the Console Pane, type C and press ENTER.

A változók értékeinek megjelenítése hibakeresés közben

Megjelenítheti a változók aktuális értékeit a szkriptben, miközben végiglép a kódon.

A szabványos változók értékeinek megjelenítésére

Használja az alábbi módszerek egyikét:

  • A Szkriptpanelen vigye az egérmutatót a változó fölé, hogy az értéke eszköztippként jelenjen meg.

  • A konzolpanelen írja be a változó nevét, és nyomja le az ENTER billentyűt.

Az ISE összes ablaktáblája mindig ugyanabban a hatókörben van. Ezért a parancsfájl hibakeresése közben a konzolpanelbe beírt parancsok a szkript hatókörében futnak. Ez lehetővé teszi, hogy a konzolpanelen megkeresse a csak a szkriptben definiált változók és függvények értékét.

Az automatikus változók értékeinek megjelenítésére

Az előző módszerrel szinte az összes változó értékét megjelenítheti a szkript hibakeresése közben. Ezek a módszerek azonban nem működnek a következő automatikus változók esetén.

  • $_

  • $Input

  • $MyInvocation

  • $PSBoundParameters

  • $Args

Ha megpróbálja megjeleníteni e változók bármelyikének értékét, akkor az adott változó értékét kapja meg a hibakereső által használt belső folyamatban, nem pedig a szkriptben lévő változó értékét. Ezt néhány változó esetén megkerülheti ($_, $Input, $MyInvocation, $PSBoundParameters, és $Args) a következő módszerrel:

  1. A szkriptben rendelje hozzá az automatikus változó értékét egy új változóhoz.

  2. Jelenítse meg az új változó értékét úgy, hogy az egérmutatót az új változó fölé viszi a Script panelen, vagy beírja az új változót a konzolpanelbe.

Például a $MyInvocation változó értékének megjelenítéséhez a szkriptben rendelje hozzá az értéket egy új változóhoz, például a $scriptName értékhez, majd mutasson rá, vagy írja be az a $scriptName változót az érték megjelenítéséhez.

# In C:\ps-test\MyScript.ps1
$scriptName = $MyInvocation.PSCommandPath
# In the Console Pane:
.\MyScript.ps1
$scriptName
C:\ps-test\MyScript.ps1

Lásd még

A Windows PowerShell ISE felfedezése

Kapcsolódó cikkek