首页 > 解决方案 > 如何在 Mac 上调试从 Java 调用的动态库中的代码

问题描述

我们的应用程序由 Java 编写的部分和 C++ 编写的部分组成。Java 部分是主要应用程序,而 C++ 部分被编译为相应平台的动态库,然后通过 JNI 访问。

在 Windows 上调试非常简单:

  1. 使用调试符号编译动态库。
  2. 在 Visual Studio 中打开相应的 C++ 源文件,无需项目。
  3. 启动 Java 应用程序。
  4. 将 Visual Studio 调试器附加到相应的javaw进程。
  5. 在之前打开的 C++ 源文件中设置断点,并在应用程序命中断点后立即开始调试。

OSX 上是否有类似的工作流程?

标签: c++xcodemacosdebuggingjava-native-interface

解决方案


Xcode 更侧重于项目,因此您必须创建一个项目才能做任何事情,并且源文件需要成为项目的一部分,但它们不需要构建到任何东西中。因此,只需使用命令行模板制作一个 MacOS xcode 项目。执行File->Add Files to MyProject并选择包含您的源的文件夹。您可以将它们添加到项目的目标中,也可以不添加 - 这并不重要,因为您没有使用该项目来构建任何东西。然后在这些源文件中设置断点,运行您的 Java 应用程序并Debug->Attach to Process by PID or Name输入您的进程名称。


推荐阅读