Параметры в вызовах функций в PowerShell (все версии) разделяются пробелом, а не запятыми . Кроме того, круглые скобки совершенно не нужны и вызовут ошибку разбора в PowerShell 2.0 (или более поздней версии), если активен Set-StrictMode
. Аргументы в скобках используются только в методах .NET.
function foo($a, $b, $c) {
"a: $a; b: $b; c: $c"
}
ps> foo 1 2 3
a: 1; b: 2; c: 3
вот объяснение строк «вызвано» и «... n еще» в напечатанной трассировке. см. также JavaDoc для printStackTrace . у вас может не быть никакой работы.
Обратите внимание на наличие строк, содержащих символы "...". Эти строки показывают, что оставшаяся часть трассировки стека для этого исключения совпадает с указанным количеством кадров из нижней части трассировки стека исключения, которое было вызвано этим исключением («закрывающее» исключение). Это сокращение может значительно уменьшить длину вывода в общем случае, когда обернутое исключение генерируется тем же методом, что и "причинное исключение".
Вы не можете что-нибудь сделать с Thread.currentThread (). GetStackTrace ()
?
Вот реальный простой пример, который 20 раз вызывает метод рекурсивно, а затем выгружает стек текущего потока.
public class Test {
public static void main(String[] args) {
method();
}
static int x = 0;
private static void method() {
if(x>20) {
StackTraceElement[] elements = Thread.currentThread().getStackTrace();
for(int i=0; i<elements.length; i++) {
System.out.println(elements[i]);
}
}
else {
x++;
method();
}
}
}
Может быть, вы можете попытаться перебрать массив, возвращаемый:
Thread.currentThread().getStackTrace();