How to debug dylib with Xcode?

prosseek picture prosseek · Jan 18, 2011 · Viewed 11.1k times · Source

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/

Answer

prosseek picture prosseek · Jan 18, 2011

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.