【问题标题】:How to debug code in dynamic libraries called from Java on Mac如何在 Mac 上调试从 Java 调用的动态库中的代码
【发布时间】:2019-07-13 06:54:49
【问题描述】:
我们的应用程序由 Java 编写的部分和 C++ 编写的部分组成。 Java 部分是主要应用程序,而 C++ 部分被编译为相应平台的动态库,然后通过 JNI 访问。
在 Windows 上调试既好又简单:
- 使用调试符号编译动态库。
- 在 Visual Studio 中打开相应的 C++ 源文件,无需项目。
- 启动 Java 应用程序。
- 将 Visual Studio 调试器附加到相应的
javaw 进程。
- 在之前打开的 C++ 源文件中设置断点,并在应用程序命中断点后立即开始调试。
在 OSX 上是否有类似的工作流程?
【问题讨论】:
标签:
c++
xcode
macos
debugging
java-native-interface
【解决方案1】:
Xcode 更侧重于项目,因此您必须创建一个项目才能做任何事情,并且源文件需要成为项目的一部分,但它们不需要构建到任何东西中。因此,只需使用命令行模板制作一个 MacOS xcode 项目。执行File->Add Files to MyProject 并选择包含您的资源的文件夹。您可以将它们添加到项目的目标中,也可以不添加 - 这并不重要,因为您没有使用该项目来构建任何东西。然后在这些源文件中设置断点,运行您的 Java 应用程序并执行 Debug->Attach to Process by PID or Name 并输入您的进程名称。