StackTraceElement的getLineNumber()给出-1值

时间:2013-05-13 12:33:27

标签: java c++ windows java-native-interface

我在C ++中有一个exe,通过它我通过JNI层实用程序使用jar文件。 C ++和Java都有它自己独立的日志记录功能,我面临一个独特的问题,在登录Java模块时,StackTraceElement为getLineNumber()调用赋予-1值,而Classname,methodname是正确的,即使我试图打印整个堆栈对于每个StackTraceElement,将getLineNumber值设置为-1。没有找出根本原因。任何输入都会很明显。

1 个答案:

答案 0 :(得分:3)

可能编译的代码没有包含调试信息。来自javac man page

  

-g
  生成所有调试信息,包括局部变量。默认情况下,仅生成行号和源文件信息。

     

-g:none
  不要生成任何调试信息。

     

-g:{keyword list}
  仅生成某些类型的调试信息,由逗号分隔的关键字列表指定。有效的关键字是:
   source 源文件调试信息
   lines 行号调试信息
   vars 本地变量调试信息