2011-01-20 22 views
5

मान लीजिए कि मेरे पास निम्न कोड है, जब त्रुटि होती है, तो मैं त्रुटि को देखना चाहता हूं कि त्रुटि पहले फ़ंक्शन बी पर हुई थी, और उसके बाद फ़ंक्शन ए पर हुआ। लेकिन वास्तव में यह केवल मुझसे कहता है त्रुटि,, समारोह एक पर हो के बाद से समारोह एक कई बार कहा जा सकता है मैं नहीं जानता कि जो बाहरी फ़ंक्शन को कॉल समारोह एक समस्यापावरहेल: त्रुटि होने पर कुल कॉल स्टैक प्रिंट कैसे करें?

cls 
function a{ 
    Remove-Item "not-exist-item" 
} 
function b{ 
    a 
} 
b 
Remove-Item : Cannot find path 'C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\not-exis 
t-item' because it does not exist. 
At C:\Users\Daniel.Wu\AppData\Local\Temp\2\a.ps1:***3 char:14*** 
+ Remove-Item <<<< "not-exist-item" 
    + CategoryInfo   : ObjectNotFound: (C:\Program File...\not-exist-item:String) [Remove-Item], ItemNotFoundException 
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand 

उत्तर

5

यदि आप पावरशेल v2.0 पर हैं, तो Get-PSCallStack का उपयोग करें। आप v1 पर अभी भी कर रहे हैं, इस तरह एक समारोह का उपयोग करें:

function Get-CallStack { 
    trap { continue } 
    1..100 | foreach { 
     $var = Get-Variable -scope $_ MyInvocation 
     $var.Value.PositionMessage -replace "`n" 
    } 
} 
1
वजह से

क्या_debuggers किसी भी रोशनी प्रदान करने में मदद करता है?

4

एक विकल्प

$ErrorActionPreference = 'inquire' 

सेट करें और फिर समस्या पैदा करने वाले स्क्रिप्ट को लागू करने की है। त्रुटि पर आपको विकल्पों के लिए संकेत दिया जाता है, नेस्टेड प्रॉम्प्ट मोड में प्रवेश करने के लिए Suspend चुनें। तो फिर वर्तमान कॉल स्टैक जानकारी पाने के लिए

Get-PSCallStack 

या यहाँ तक कि

Get-PSCallStack | fl 

टाइप करें।

संबंधित मुद्दे