`の私はHPROFプロファイラの出力は、行番号が含まれていないにかかわらずlineno`値
java -cp some:jars:out \
-agentlib:hprof=cpu=times,format=a,file=java.hprof.txt,lineno=y,doe=y com.foo.Benchmark \
< /dev/null
を実行しているし、出力に私はスタックフレームを取得する行番号なし
THREAD START (obj=50000150, id = 200002, name="HPROF gc_finish watcher", group="system")
THREAD START (obj=50000151, id = 200001, name="main", group="main")
THREAD START (obj=50000281, id = 200003, name="Thread-1", group="main")
THREAD END (id = 200003)
THREAD END (id = 200001)
THREAD START (obj=500002a5, id = 200004, name="DestroyJavaVM", group="main")
THREAD END (id = 200004)
TRACE 307081:
com.foo.Benchmark.methodName(Benchmark.java:Unknown line)
com.foo.Benchmark.anotherMethodName(Benchmark.java:Unknown line)
...
私が変更した場合lineno=y
〜lineno=n
私はまだUnknown line
を取得します。
私は-g
でクラスをコンパイルしました。
javac -g -Xlint -encoding UTF-8 -source 1.5 -d out -classpath ... src/main/com/foo/*.java
のような私のjavac
ルックスは、私は、彼らが行番号を持っていることを確認する.class
ファイルをチェックする:私はいくつかのフラグの組み合わせを使用しています
javap -classpath out -c -l com.foo.Benchmark
が
LineNumberTable:
line 1077: 0
line 1078: 8
line 1079: 14
line 1080: 21
line 1082: 23
line 1083: 31
line 1084: 43
のようなものの多くを示しています行番号の出力を妨げる?
ポインタありがとうございます。私はもうこのベンチマークを簡単に走らせることはできませんが、これを念頭に置いておきます。 –
マイクの例では、 'cpu = times'オプションを使用しています - あなたは' heap = sites'です。後のオプションは行番号を出力し、最初の行は行番号を出力しません。 –