Hopper offers a GDB/LLDB Debugger Server companion to the standard program. I'm unclear on what this should / can be used for. When I run the debugger server on the same machine that I'm using I see this:

enter image description here

There aren't really any options or built-in help. When I open Hopper.app's debugger panel I only see the program running locally. I was initially thinking that the Remote Debugger was maybe used to offload some of the processing to another computer, but I've also tried running Hopper Debugger Server on another mac on my LAN but I don't see it come up in the list, only my local machine:

enter image description here

As there are no settings to specify remote connection information, I think I need to do something remotely that would specify a the address of the machine running Hopper so that it can sort of 'dial in' and then show up on the list.

I haven't had any luck with the Hopper website, forum, FAQ.

What am I missing?

Can anyone give me a brief outline of how the GDB/LLDB remote debugger
is intended to be used (with Hopper) ?

  • Write a short program that crashes. You will see OSX'es own "Program terminated" dialog pop up, with the option to view the crash log and Send To Apple. What happens when when you have the debugger server running? – Jongware Jan 25 '15 at 16:41
  • @Jongware - you're saying it should catch OS X crashes and allow debugging? Does it do anything else, i.e. what about the "GDB: not found" message? – cwd Jan 25 '15 at 16:49
  • Well it's only a guess. It seems to search for a debugger to start up when a crash happens. – Jongware Jan 25 '15 at 16:52
  • On the same machine you don't need the debugger server anymore. There is a built-in debugger. Just for a remote machine. – Henno Brandsma Jan 25 '15 at 19:09
  • @HennoBrandsma - thanks, can you describe how to use it with a remote machine? Does the remote machine have to be a mac? – cwd Jan 26 '15 at 0:38

I'm surprised nobody posted an answer, but here's what I eventually came to realize:

A lot of times disassembling is used for taking apart potential malicious apps like viruses, worms, or malware to understand how they affect a system. There is both static and dynamic disassembly. Static disassembly poses (little) threat to your system as it is only looking through the code - however dynamic disassembly is actually running the code ( with breakpoints, etc ) - which is something you probably don't want to do on your main computer if the code is potentially malicious.

Here's what IDA says in a tutorial about disassembling a "hostile" executable:

We could put a breakpoint there and let the program run. Now, before we do that, let's repeat that it is not a good idea to run untrusted code on your computer. It is much better to have a separate "sandbox" machine for such tests, for example using the remote debugging facilities IDA offers. Therefore, IDA displays a warning when a new file is going to be started under debugger: ignore at your own risk.

This finally made sense as an explanation for why you may want to use a remote debugger - seems so obvious now!

I'm still not exactly sure on how to setup and/or use Hopper's remote debugger but I'm sure I'll figure that out eventually.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.