jstack 출력에 소스 행 번호를 표시하는 방법은 무엇입니까?


0

이것은 JVM

"FooThread" prio=10 tid=0x00007f159c2ca000 nid=0x6e21 waiting on condition ..snipped 
    java.lang.Thread.State: TIMED_WAITING (sleeping) 
    at java.lang.Thread.sleep(Native Method) 
    at com.myco.impl.QueueFooThread.run(Unknown Source) 

내가 카탈 공정이 프레임처럼 보여 QueueFooThread의 줄 번호를 원하는 실행

at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1548) 

내가 컴파일시 어떻게해야하나요/부트 스트랩에서 jstack을 출력은 이 기능을 사용하려면? 감사합니다

  0

예에서 원시 위치와 알 수없는 소스 위치를 가진 메소드가 있는데, 어느 것도 그 라인 번호를 표시 할 수 없습니다. 22 feb. 092009-02-22 05:21:57

3

이것은 완전한 대답은 아니지만 -g (디버깅) 옵션을 javac으로 전달하면 디버거 (jdb)가 줄 번호를 비롯한 소스 정보를 표시 할 수 있습니다. 나는 네 사건에 효과가 있을지 모르겠다.

  0

다음과 같이해야합니다 : -g : lines, source to 작업. 22 feb. 092009-02-22 07:18:08

  0

흠, 나는 단지 -g가 모든 디버깅 정보 (라인과 소스 포함)를 포함 할 것이라고 생각했다. 그러나 어떤 작품이든 ... 22 feb. 092009-02-22 08:13:12


1

디버그 옵션을 사용하여 소스를 컴파일하십시오. 예.

<javac target="1.5" source="1.5" classpathref="class.path" srcdir="${src}" destdir="${build}" debug="true" encoding="UTF-8"/> 

0

코드를 컴파일 할 때 디버깅을 사용하도록 설정해야합니다. 참고 : 라이브러리의 경우 컴파일 할 때 디버깅을 사용하도록 설정해야합니다.


0

디버그 정보로 컴파일하는 것이 가장 좋습니다. 하지만 소스가 아닐 경우 항상 jad 같은 것으로 디 컴파일 할 수 있습니다. 그것은 줄 번호로 당신을 도울 수 없지만 당신이 약간의 추측을한다면 그것은 여전히 ​​꼬집음으로 유용 할 수 있습니다.