Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Debugging in XCode as root

In my program I need to create sockets and bind them to listen HTTP port (80). The program works fine when I launch it from command line with sudo, escalating permissions to root. Running under XCode gives a 'permission denied' error on the call to binding function (asio::ip::tcp::acceptor::bind()).

How can I do debugging under XCode?

All done in C++ and boost.asio on Mac OS X 10.5 with XCode 3.1.2.

like image 682
Anton Avatar asked Jun 23 '09 14:06

Anton


People also ask

How do I debug in Xcode?

When you run an application in Xcode, the debugger is automatically started and attached to the process of the application. Click the Run button in the top left or press Command + R. From the moment the application is up and running, we can start inspecting the process and, if necessary, debug it.

What is debugging executable in Xcode?

The “Debug executable” checkbox specifies whether or not you want to run with the debugger enabled. Once running, you can use Debug > Attach to Process on a process that has been launched with debugging disabled if needed. It seems like all this does is start your app with the debugger attached.

How do I debug Xcode on iPhone?

To try to debug it, set your active scheme in Xcode to be AppName > iPhone 11 Pro Max. Then using the simulator alone (not Xcode) click on the AppName to let it run. Then go into Xcode and do Debug > Attach to process by PID. Then type in the name of your App, and click Attach.


2 Answers

In Xcode 4.5 Product->Edit Scheme: Look in the Info tab under Debug Process As and choose the root option.

like image 99
Mike.R Avatar answered Sep 20 '22 21:09

Mike.R


Update: For Xcode 4.5 and later, see this answer instead.


The only way I'm aware of to do what you're asking is to run Xcode as root.

>> sudo /Developer/Applications/Xcode.app/Contents/MacOS/Xcode 

Once you're running as root, anything processes launched from Xcode will also run as root. Note, though, that if you create or edit any files, they will be owned by root, which means that you'll have to chown them before you can edit them as your normal user first.

I'd love a way for Xcode to say "Launch process as root", but as far as I know, no such functionality is available.

Note that you can also run the application within the command-line debugger gdb to debug your application. Run

>> sudo gdb /path/to/my/application 

Then you could keep Xcode open, modify at will, and debug your program within gdb. This is what I generally do.

EDIT: Readers from the future: see the answer from Alexander Stavonin; it talks about how to do this. If you're okay with ssh keys and enabling the root user on your system, his answer is the way to go.

like image 45
BJ Homer Avatar answered Sep 20 '22 21:09

BJ Homer