如何使用 Xcode 调试 dylib?

发布于 2024-10-12 15:43:04 字数 904 浏览 5 评论 0原文

我有一个 arith 库的 Xcode 项目。 我可以使用调试配置来构建它,并且我需要调试它。我怎样才能做到这一点?

理想的方法是设置测试代码以在项目文件中构建执行,然后在 arith 库的源代码中设置断点。

但是,Xcode arith 项目似乎不允许添加另一个使用 arith 库的 use_arith 项目。

人们使用什么方法在 Xcode 中调试动态库?

添加

我用谷歌搜索并找到了一些调试 dll 的方法。附加到正在运行的进程可以是调试动态库的一种方法。并且,对于iPhone/iPad编程不允许动态库,所以使用静态库。

  1. 附加到正在运行的进程 - http:// /gcc.gnu.org/onlinedocs/gnat_ugn_unw/Attaching-to-a-Running-Process.html

  2. 使用 Xcode 调试库 - 使用 Xcode 调试库

  3. 简单的模块化代码跨 iPhone 应用程序共享:静态库和跨项目引用 - http:// www.clintharris.net/2009/iphone-app-shared-libraries/

I have a Xcode project for library arith.
I could build it with debug configuration, and I need to debug it. How can I do that?

The ideal method would be to set up a test code to build an execution in a project file, and then set a breakpoint in a source code in arith library.

However, it seems that Xcode arith project doesn't allow to add another use_arith project that uses the arith library.

What method people use to debug a dynamic library in Xcode?

ADDED

I googled and found some ways to debug dll. Attaching to a running process can be one way of debugging dynamic library. And, for iPhone/iPad programming dynamic library is not allowed, so static library is used.

  1. Attaching to a Running Process - http://gcc.gnu.org/onlinedocs/gnat_ugn_unw/Attaching-to-a-Running-Process.html

  2. Debugging a library with Xcode - Debugging a library with Xcode

  3. Easy, Modular Code Sharing Across iPhone Apps: Static Libraries and Cross-Project References - http://www.clintharris.net/2009/iphone-app-shared-libraries/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

深海里的那抹蓝 2024-10-19 15:43:04

我可以找到一种在 Xcode 中调试动态库的方法。

构建

  1. 创建一个库,我将其称为算术库。调试构建以制作 libarith.dylib。
  2. 创建一个项目来使用该库,我将其称为 usearith。
  3. 对于userarith,Project->Add To Project,添加arith库。
  4. 打开项目信息,然后打开“构建”选项卡。
  5. 转到搜索路径/库搜索路径,拖放算术库。您应该删除库名称,因为您只需要指定路径。使用“标头搜索路径”指定标头目录。
  6. 转到链接,设置其他链接器标志,添加 -larith

Running

Now,您应该能够将执行二进制文件链接到库。
运行时需要将动态库复制到执行二进制文件所在目录。

调试

您需要在 arith/usearith 上设置断点。
您可以在 arith 中运行调试器并使用单步调试 arith 项目中的代码。

I could find a way to debug dynamic library in Xcode.

Build

  1. Make a library, I'll call this arith library. Debug build to make libarith.dylib.
  2. Make a project to use the library, I'll call this usearith.
  3. For userarith, Project->Add To Project, and add the arith library.
  4. Open Project info, and open the Build tab.
  5. Go to Search Paths/Library Search Paths, drag and drop the arith library. You should remove the library name as you need only specify the path. Specify the header directory with 'Header Search Paths'.
  6. Go to Linking, set Other Linker Flags, add -larith

Running

Now, you should be able to link the execution binary to the library.
For running, you need to copy the dynamic library to the directory where the execution binary is located.

Debugging

You need to set the breakpoints both arith/usearith.
You can run debugger in arith and use the step into to debug the code in a arith project.

旧伤慢歌 2024-10-19 15:43:04

我遇到了同样的问题,之前的答案都不适合我的情况,所以我分享我的解决方案(针对 Xcode):

如果您需要调试由外部(可执行)程序加载的 ac/c++ dylib:< /strong>

  1. 首先确保您的 dylib 是使用与外部程序相同的架构构建的。
  2. 然后转到-->产品 —> 方案 —> 编辑方案
  3. 转到选项卡运行(调试)并选中“调试可执行文件”,然后在下拉按钮中选择您的外部程序作为可执行文件。然后选中“自动启动”
  4. 此外,如果您的程序需要额外的参数,您可以将其添加到
    “参数”选项卡。
  5. 最后,在 c 源文件中设置一些断点,然后单击运行。

I faced the same problem and no one of the previous answer worked for my case so I share my solution (for Xcode):

If you need to debug a c/c++ dylib which is loaded by an external (executable) program:

  1. First be sure that your dylib is build with the same architecture as your external program.
  2. Then Go to --> Product —>Scheme—>Edit scheme
  3. Got to Tab Run(Debug) and check "Debug Executable" , then select into the dropdown button your external program as executable. Then check "Launch Automatically"
  4. Additionally if you program needs extra argument you can add it into the
    "Arguments" tab.
  5. Finally you set some breakpoints to your c source file and finally click run.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文