Debugging qemu this evening and it took me a minute or two to figure out the syntax for debugging a core file with lldb.
lldb mips-bsd-user/qemu-mips -c /mipsbuild/qemu-mips.core
Make sure you have permissions to access both the binary and the core, else you get a super unhelpful error of:
error: Unable to find process plug-in for core file ‘/mipsbuild/qemu-mips.core’
But, after that, you can start poking around:
Core file ‘/mipsbuild/qemu-mips.core’ (x86_64) was loaded.
Process 0 stopped
* thread #1: tid = 0, 0x00000000601816fa qemu-mips`_kill + 10, name = ‘qemu-mips’, stop reason = signal SIGILL
frame #0: 0x00000000601816fa qemu-mips`_kill + 10
qemu-mips`_kill + 10:
-> 0x601816fa: jb 0x60182f5c ; .cerror
0x60181700: ret
0x60181701: nop
0x60181702: nop
(lldb) bt
* thread #1: tid = 0, 0x00000000601816fa qemu-mips`_kill + 10, name = ‘qemu-mips’, stop reason = signal SIGILL
* frame #0: 0x00000000601816fa qemu-mips`_kill + 10
frame #1: 0x000000006003753b qemu-mips`force_sig(target_sig=<unavailable>) + 283 at signal.c:352
frame #2: 0x00000000600376dc qemu-mips`queue_signal(env=<unavailable>, sig=4, info=0x00007ffffffe8878) + 380 at signal.c:395
frame #3: 0x0000000060035566 qemu-mips`cpu_loop [inlined] target_cpu_loop(env=<unavailable>) + 1266 at target_arch_cpu.h:239
frame #4: 0x0000000060035074 qemu-mips`cpu_loop(env=<unavailable>) + 20 at main.c:201
frame #5: 0x00000000600362ae qemu-mips`main(argc=1623883776, argv=0x00007fffffffd898) + 2542 at main.c:588
frame #6: 0x000000006000030f qemu-mips`_start + 367
Edit: The permission error on the core file is now more meaningful in later versions of llvm:
http://llvm.org/viewvc/llvm-project?view=revision&revision=240753