Intel Mac OS X debugger

The Intel Mac OS X debugger has the following particularities and limitations:

- OSX requires debugger applications to be codesigned.

  We do not codesign the main IDA Pro application. This is to make it easier for users
  to write binary plugins. If you want to debug with IDA using the Local Mac OS X Debugger,
  you will have to run IDA with elevated permissions.
  We suggest that users use the Remote Mac OS X Debugger along with the mac debugger servers,
  even when debugging locally. The debug servers are shipped with IDA and are already codesigned,
  so they are able to debug right out of the box.
  If for whatever reason the server's code signature is not valid on your machine,
  IDA will display a message that looks like:
    Permission denied. Please ensure that '%s' is either codesigned or running as root.
  This means that OSX refused to recognize the server as a trusted application, in spite of its signature.
  To get around this, you can create a Self-Signed Certificate, and use this to codesign the server:
  1. Follow the steps at
     and replace all instances of 'lldb_codesign' with 'mac_server'.
  2. $ codesign --force -s mac_server /path/to/mac_server
     $ codesign --force -s mac_server /path/to/mac_server64
  The servers should now be able to properly debug.
  Also note that even if the servers have been properly codesigned, you will still need to
  provide OSX with your credentials to authorize the debugging session. This only needs to be done
  once per user login session. Subsequent runs of the debugger should run silently.
- In Mac OS X, UNIX signals are emulated on top of the Mach microkernel. The debugger hooks to the microkernel events to get information about the application, effectively hiding the signals from installed signal handlers. We will try to solve this problem in the future.

- In multithreaded applications running on multicore processors, several events may happen simutlaneously. For example, several threads may activate a breakpoint at the same time. In IDA, these events will be presented sequentially. For example, the user might decide to single step for the first presented breakpoint. In response to the user's command, IDA will present all other breakpoints and only when the user will have handled all breakpoints, the execution will be resumed.

 See also How to launch remote debugging
          Debugger submenu
          Start process
          Remote iOS debugger
Index | Previous topic | Next topic