使用jni调用c++函数中调试dll遇到的有关问题
使用jni调用c++函数中调试dll遇到的问题
我在通过jni来实现java调用c++ 方法时候,无法调试那个dll工程。具体做法和现象如下:
为了在java程序中调用c++ 的方法,我在java代码中使用native方法,再通过javah得到相应的.h文件。然后在vs2005中创建了一个dll工程。倒入这个.h文件,又完成了这些函数的实现。
我把生成的dll文件放到java的工程里面,为了实验一下,我只是调用一个native函数,但是就出错了。我觉得应该是dll的问题。所以想调试一下那个dll。我在网上找到别人的做法,在那个dll工程里面,设置debugging-> command 为java.exe。command argument为我那个java工程的main函数所在类。然后在dll工程里面设置断点来调试。但是给出错误框:
debugging information of "java.exe " can 't be found or doesn 't not match. symbol can 't be loaded.
我不知道这样的做法是不是正确,那这个问题又怎么解决呢?真的很棘手。究竟该怎么对这个dll程序进行调试呢?
我第一次发文,没有多少分可以给~~大家谅解把
------解决方案--------------------
没搞过jni,如果不能对源码调试,那可以在dll里加上这些信息来调试,如果没有trace,就自己写个,要不直接用OutDebugString也可以..输出信息到调试窗口
#ifdeg debug
trace(...)
#endif
我在通过jni来实现java调用c++ 方法时候,无法调试那个dll工程。具体做法和现象如下:
为了在java程序中调用c++ 的方法,我在java代码中使用native方法,再通过javah得到相应的.h文件。然后在vs2005中创建了一个dll工程。倒入这个.h文件,又完成了这些函数的实现。
我把生成的dll文件放到java的工程里面,为了实验一下,我只是调用一个native函数,但是就出错了。我觉得应该是dll的问题。所以想调试一下那个dll。我在网上找到别人的做法,在那个dll工程里面,设置debugging-> command 为java.exe。command argument为我那个java工程的main函数所在类。然后在dll工程里面设置断点来调试。但是给出错误框:
debugging information of "java.exe " can 't be found or doesn 't not match. symbol can 't be loaded.
我不知道这样的做法是不是正确,那这个问题又怎么解决呢?真的很棘手。究竟该怎么对这个dll程序进行调试呢?
我第一次发文,没有多少分可以给~~大家谅解把
------解决方案--------------------
没搞过jni,如果不能对源码调试,那可以在dll里加上这些信息来调试,如果没有trace,就自己写个,要不直接用OutDebugString也可以..输出信息到调试窗口
#ifdeg debug
trace(...)
#endif