いくつかの並列スレッドが実行されている複雑なJavaコードをデバッグすると、すべてのブレークポイントをキャプチャするのは簡単ではなく、問題の原因となったパスを見つけるのは難しい場合もあります。このようなシナリオでは、疑わしい場所にメソッド呼び出しスタックを出力する必要があります。 Java内でメソッド呼び出しスタックを印刷するにはどうすればよいですか?Javaメソッド呼び出しスタックを印刷するには?
答えて
ソースファイル内の特定の場所からスタックトレースを出力する方法は次のとおりです。
System.out.println("Printing stack trace:");
StackTraceElement[] elements = Thread.currentThread().getStackTrace();
for (int i = 1; i < elements.length; i++) {
StackTraceElement s = elements[i];
System.out.println("\tat " + s.getClassName() + "." + s.getMethodName() + "(" + s.getFileName() + ":" + s.getLineNumber() + ")");
}
これは、IDEでデバッガを使用するより多くの情報を提供するとは思わないと思います。また、デバッガとは違って、変数の値を見ることはできません。私はこれが役に立つと思われる状況は想像できません。それは、あなたが自転車をF1に持ってきたことを私に尋ねます。 –
正解ですが、あまり役に立ちません。 – duffymo
さらに簡単に新しいThrowable()。printStacktrace() –
ちょうどあなたがのStackTraceElementを印刷するために直接使用することができますので、これはのStackTraceElement
public String toString() {
return getClassName() + "." + methodName +
(isNativeMethod() ? "(Native Method)" :
(fileName != null && lineNumber >= 0 ?
"(" + fileName + ":" + lineNumber + ")" :
(fileName != null ? "("+fileName+")" : "(Unknown Source)")));
}
のtoStringメソッドの定義であるコード
System.out.println("Stack trace:");
StackTraceElement[] stackTraces = Thread.currentThread().getStackTrace();
for (int i = 1; i < stackTraces.length; i++) {
System.out.println(stackTraces[i]);
}
の下に使用します。
なぜdownvotingですか? – nagendra547
- 1. Javaのメソッド呼び出しスタックのコピー
- 2. Javaメソッド呼び出しのCPU /スタックを制限しますか?
- 3. windbgのLogger.exeを使用してメソッド呼び出しを印刷
- 4. Javaで呼び出されるメソッドのスタックを取得する
- 5. Androidのメソッド呼び出しスタック
- 6. メソッド呼び出しをスタックする方法は?
- 7. 実行時に呼び出されない印刷メソッドは、デバッグ時に呼び出されます
- 8. Android Javaメソッド呼び出し
- 9. Javaメソッドを呼び出す
- 10. Pyro4リモートオブジェクトのメソッドを永久にスタックして呼び出す。
- 11. メソッド呼び出し中のメソッドjava
- 12. コルーチンの呼び出しスタック
- 13. ルビーコード "around"呼び出しスタック
- 14. 印刷再帰/スタック
- 15. 各印刷呼び出しの後に新しい行を印刷する方法
- 16. Javaのクラスとメソッドの呼び出し元を知るには?
- 17. メソッドJavaクラスでの呼び出し
- 18. 別のクラスの呼び出しメソッドJAVA
- 19. Javaメソッドの呼び出し形式
- 20. Javaでのメソッド呼び出しのキャプチャ
- 21. Javaメソッド - 呼び出しと定義
- 22. Java - Infinity Loopシングルトンクラスのメソッド呼び出し
- 23. AIML processorextensionカスタムJavaメソッド呼び出し
- 24. 継承メソッド呼び出し - Java
- 25. Java Find Referenceメソッド呼び出しのタイプ
- 26. 現在の呼び出しスタックをPythonコードのメソッドから出力する
- 27. PHPからPerlプログラムを呼び出して出力を印刷する
- 28. JavaメソッドからJavaScriptを呼び出す
- 29. バイトコードクラスのメソッドを呼び出す、java
- 30. javaメソッドをJavaScriptコードで呼び出す
IntelliJのような実際のIDEを使用する方がよいでしょう。完全なスタックなどが表示されます。 – duffymo