c++ - 如何在 Mac 上调试从 Java 调用的动态库中的代码
问题描述
我们的应用程序由 Java 编写的部分和 C++ 编写的部分组成。Java 部分是主要应用程序,而 C++ 部分被编译为相应平台的动态库,然后通过 JNI 访问。
在 Windows 上调试非常简单:
- 使用调试符号编译动态库。
- 在 Visual Studio 中打开相应的 C++ 源文件,无需项目。
- 启动 Java 应用程序。
- 将 Visual Studio 调试器附加到相应的
javaw
进程。 - 在之前打开的 C++ 源文件中设置断点,并在应用程序命中断点后立即开始调试。
OSX 上是否有类似的工作流程?
解决方案
Xcode 更侧重于项目,因此您必须创建一个项目才能做任何事情,并且源文件需要成为项目的一部分,但它们不需要构建到任何东西中。因此,只需使用命令行模板制作一个 MacOS xcode 项目。执行File->Add Files to MyProject
并选择包含您的源的文件夹。您可以将它们添加到项目的目标中,也可以不添加 - 这并不重要,因为您没有使用该项目来构建任何东西。然后在这些源文件中设置断点,运行您的 Java 应用程序并Debug->Attach to Process by PID or Name
输入您的进程名称。
推荐阅读
- javascript - 图像未加载反应
- javascript - 你如何在 Braintree 上设置你的客户端
- hdfs - MOD10A1 NDSI 积雪层中从 100 到 200 的值是什么意思?
- ruby-on-rails - Rails Active Storage NoMethodError - nil:NilClass 的未定义方法“[]”:
- javascript - 为什么websocket“打开”事件没有触发?
- python - 将数据上传到mysql数据库?
- javascript - MongoDB 效率最佳模式设计
- javascript - 为什么新函数 JavaScript 中未定义数学
- r - 将经过时间(HH:MM:SS)从excel导入R
- amazon-s3 - 使用 OAI 受限存储桶策略时,具有 S3 源的 Cloudfront 返回 AccessDenied