# What is the difference between an emulator and a debugger? [duplicate]

In my experience I've used (to some degree) both emulators and debuggers. I've used them both for loading binaries (containing production code) into flash memory. I've also used them while developing programs in C and C++. On one hand you have your expensive $10,000 emulator (like the Lauterbach) or you have your humble Atmel JTAG ICE3 debugger (roughly$90). In my limited experience in roles involving embedded systems, I guess I've never really gotten down to the nitty gritty where I've needed to notice the difference.

One of my co-workers thinks that an emulator would allow you to directly connect to a processor and control it via JTAG. So I guess they are saying that you'd also be able to see dissassembly and be "attached" while stepping through the running embedded software. Is this true? If that's true then it is the only difference I could see. What are some other difference between the two?

• Short answer: emulation is a relic from the past/marketing babble. Long answer from tcrosley: electronics.stackexchange.com/questions/278451/… Mar 29 '18 at 18:22
• The language used in the marketplace isn't precise. If you need to know what makes a \$10k device worth its price, it is very easy to find out. Just contact the seller and ask them. They won't mind trying to explain why their device is work more money than a basic JTAG debugger module. I own a Microchip ICE 2000, which used "bond-out MCUs" (specialized, "unobtainable" ICs that provided more detailed access to the internals than a regular MCU IC) and plugs directly into the socket. The traces and breakpoints possible from that were NOT possible from the regular MCU.
– jonk
Mar 29 '18 at 18:29
• To keep things short: An emulator "mimics" hardware. For instance, there are emulators for different types of processors. There are emulators where you can play old-school video games like the Famicom/NES. You're running video game code through foreign hardware but an emulator can mimic that hardware. However, the problem with emulators is that there are checksums that the emulator cannot handle. There's also Assembly based emulators like Mars that can run MIPS Assembly. Debuggers run code specified by software for its instructions set and essentially converts code into machine code.
– user103380
Mar 29 '18 at 19:28

You need an emulator if you want to debug (e.g. single step, watch registers, set breakpoints etc.) an original processor that doesn't have an integrated debugging interface.

The emulator is a more or less exact replica of the original processor with additional debugging hardware.

Nowadays many controllers have this debugging support as standard equipment although it is only needed for development. For those a simple debugger is enough.

• (with an emulator) can you debug disassembly without loading a binary? Mar 29 '18 at 18:27
• It's not clear to me what you mean. Of course you always have to load the code you want to debug and the dissassembling is always done in the software part of the debugging system (host PC).
– Curd
Mar 29 '18 at 18:30
• What I mean is... You have a chip running some arbitrary code, can I just like "attach" to the current running code and debug it in disassembly from wherever it's currently running? Mar 29 '18 at 18:31
• yes, but that's also possible in the other case.
– Curd
Mar 29 '18 at 18:32
• You can only attach a "debugger" to a chip; an actual correctly-named "emulator" replaces the chip, so you'd have to load the code into the emulated chip before it could run it. If the emulation is accurate, the product's existing code loading mechanism should be able to do that. Mar 29 '18 at 18:39