使用 Eclipse 调试 JNI/C++ 库和进程
Using Eclipse to debug a JNI / C++ library and processes
我很难理解如何调试我的C++代码和相关的分叉Java进程。 我有C++代码可以分叉一个.jar的 SWING 文件。 这将打开一个 Java 窗口并等待用户输入...
我创建了一个C++ eclipse项目,它成功地编译了C++和Java源代码。 这两个编译都使用 -g 编译器标志。但是当我在调试模式下运行时,我只能单步执行初始C++代码。 在 fork 语句(启动 JAVA SWING 代码(之后,我无法逐步执行 Java 代码。下一步直接进入分叉的语句。 我正在使用 JNI 调用来调用在编译时创建的C++共享对象库。
我读过其他关于人们启动他们的 Java 应用程序然后通过 JNI 调用调用C++的文章。 但我正在做相反的事情。 我从我的C++代码开始,然后分叉一个 java 进程。
无论哪种方式,我似乎都需要以某种方式将我的分叉 Java 进程附加到当前C++ eclipse 调试会话。 我该怎么做呢? 一个简单的例子将不胜感激。
调试的命令行选项在C++中创建 Java VM。要使用侦听器运行 Java 进行调试,请传递以下选项(如果端口 8000 不空闲,则可以选择其他地址(
-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
然后在 Eclipse 调试对话框中创建一个"远程 Java 应用程序"。在"连接属性"的"端口"字段中使用选项中的地址(默认值为 8000(。在 Java 代码中设置一些断点,然后按"调试"。如果需要调试在 Java 启动时发生的代码,可以在选项中使用suspend=y
,然后 VM 将在启动之前等待来自调试器的连接。
如果您无法更改 Java 进程的选项,那么您就不走运了。
编辑:文档 http://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html 告诉我-Xrun
现在正在-agentlib
。不知道,因为我多年来一直在使用上述选项,而且它们还没有停止工作。
- boost::进程间消息队列引发错误
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 是否可以通过C++扩展强制多个python进程共享同一内存
- IPC使用多个管道和分支进程来运行Python程序
- 异常属于C++中的线程还是进程
- WMI检测进程创建事件-c++
- c++多进程编写一个唯一的文件
- 如何在C++中将函数发送到另一个进程
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- 终止 QProcess 不会终止子进程
- 将返回值从 exe 传递到 bat,并将其传递给 C# 中的进程
- COM :是否可以查看是否存在对我的某个 COM 对象的进程外引用?我可以释放它吗?
- Windows 进程间同步类似事件?
- 在挂钩启动新线程时解除挂钩进程
- pclose() 不会给我进程退出代码
- 运行代码时,c++ 会终止进程
- 可以读入进程内存的最大块大小是多少?
- 枚举进程模块在有效句柄上返回无效句柄
- 如何读取特定地址的进程内存?
- 如何从另一个进程解开全局钩子?