yuu_nkjm blog


2011-01-14(Fri) [長年日記]

[Java] JVM上で実行している箇所(ソースコード内の行数)の表示

現在どのソースコードの何行目にいるかを取得したいことがある.log4jの機能を使って,ログファイルに書き出すような方法も考えられるが,文字列として取得したい場合などは他の方法が必要.そんなとき,Thread.currentThread().getStackTrace(),もしくはException.getStackTrace()を使う.

メソッドの呼び出し元を調べたい時にも使える.

Threadクラス

StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace(); 

出力例↓

java.lang.Thread.getStackTrace(Thread.java:1436)
info.nkjm.yuu.java.Hoge.start(Hoge.java:23)
info.nkjm.yuu.java.Hoge.main(Hoge.java:16)

Exceptionクラス

StackTraceElement[] stackTraceElements = new Exception().getStackTrace();

出力例↓

info.nkjm.yuu.java.Hoge.start(Hoge.java:23)
info.nkjm.yuu.java.Hoge.main(Hoge.java:16)

トップ «前の日記(2011-01-13(Thu)) 最新 次の日記(2011-01-15(Sat))» 月表示 編集 設定
2006|01|06|12|
2007|06|09|
2008|01|03|04|06|07|08|09|10|12|
2009|01|02|05|06|07|08|10|11|12|
2010|03|04|05|06|07|08|09|10|11|
2011|01|02|03|04|05|06|07|08|09|11|12|
2012|01|02|04|06|07|08|10|11|12|
2013|01|02|03|07|08|10|11|12|
2014|01|02|04|05|06|07|08|09|10|11|
2015|01|02|07|11|12|
2016|01|03|05|07|08|09|