[Mono-list] Debugging Mono applications under GDB

Chris Swiedler cswiedler at trionworlds.com
Tue Oct 20 01:11:16 UTC 2015


We have a server application that's being developed under Visual Studio and run under Mono 3.12. We're generating .mdb files from the .pdbs that VS creates. With those deployed next to the executable, mono will give full callstacks with source and line information when logging exceptions, so I believe the .mdbs are correct.

I've read http://www.mono-project.com/docs/debug+profile/debug/ so many times I can quote it by heart, but I still can't get gdb to give me any useful symbols. I'm using gdb 7.6.1, so according to the docs, it should just use the JIT interface to get symbols.

Is there any way to troubleshoot the loading of symbols by gdb? There are examples for how to generate xdb shared object files (I've tried them, but as doesn't like some of the assembly that MONO_XDEBUG generates) but nothing on the new JIT interface other than "it should work". 

I do get errors like "../../gdb/dwarf2-frame.c:683: internal-error: Unknown CFI encountered." I'm not sure if those are relevant to my problem. A sample gdb session is below.

Thanks,
chris

GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-64.el7 Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Attaching to process 21185
Reading symbols from /usr/bin/mono-sgen...(no debugging symbols found)...done.
Reading symbols from /lib64/libm.so.6...Reading symbols from /usr/lib/debug/usr/lib64/libm-2.17.so.debug...done.
done.
Loaded symbols for /lib64/libm.so.6
Reading symbols from /lib64/librt.so.1...Reading symbols from /usr/lib/debug/usr/lib64/librt-2.17.so.debug...done.
done.
Loaded symbols for /lib64/librt.so.1
Reading symbols from /lib64/libdl.so.2...Reading symbols from /usr/lib/debug/usr/lib64/libdl-2.17.so.debug...done.
done.
Loaded symbols for /lib64/libdl.so.2
Reading symbols from /lib64/libpthread.so.0...Reading symbols from /usr/lib/debug/usr/lib64/libpthread-2.17.so.debug...done.
done.
[New LWP 21269]
[New LWP 21266]
[New LWP 21254]
[New LWP 21253]
[New LWP 21252]
[New LWP 21250]
[New LWP 21248]
[New LWP 21246]
[New LWP 21244]
[New LWP 21242]
[New LWP 21240]
[New LWP 21237]
[New LWP 21235]
[New LWP 21223]
[New LWP 21221]
[New LWP 21219]
[New LWP 21217]
[New LWP 21216]
[New LWP 21214]
[New LWP 21213]
[New LWP 21211]
[New LWP 21209]
[New LWP 21208]
[New LWP 21207]
[New LWP 21205]
[New LWP 21204]
[New LWP 21203]
[New LWP 21202]
[New LWP 21200]
[New LWP 21188]
[New LWP 21187]
[Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1".
Loaded symbols for /lib64/libpthread.so.0 Reading symbols from /lib64/libgcc_s.so.1...Reading symbols from /usr/lib/debug/usr/lib64/libgcc_s-4.8.3-20140911.so.1.debug...done.
done.
Loaded symbols for /lib64/libgcc_s.so.1
Reading symbols from /lib64/libc.so.6...Reading symbols from /usr/lib/debug/usr/lib64/libc-2.17.so.debug...done.
done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...Reading symbols from /usr/lib/debug/usr/lib64/ld-2.17.so.debug...done.
done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2 Reading symbols from /lib64/libnss_files.so.2...Reading symbols from /usr/lib/debug/usr/lib64/libnss_files-2.17.so.debug...done.
done.
Loaded symbols for /lib64/libnss_files.so.2 Reading symbols from /usr/lib/mono/4.5/mscorlib.dll.so...done.
Loaded symbols for /usr/lib/mono/4.5/mscorlib.dll.so Reading symbols from /usr/lib64/libMonoPosixHelper.so...done.
Loaded symbols for /usr/lib64/libMonoPosixHelper.so Reading symbols from /lib64/libz.so.1...Reading symbols from /usr/lib/debug/usr/lib64/libz.so.1.2.7.debug...done.
done.
Loaded symbols for /lib64/libz.so.1
Reading symbols from /lib64/libnss_dns.so.2...Reading symbols from /usr/lib/debug/usr/lib64/libnss_dns-2.17.so.debug...done.
done.
Loaded symbols for /lib64/libnss_dns.so.2 Reading symbols from /lib64/libresolv.so.2...Reading symbols from /usr/lib/debug/usr/lib64/libresolv-2.17.so.debug...done.
done.
Loaded symbols for /lib64/libresolv.so.2 clock_nanosleep (clock_id=1, flags=1, req=0x7fff271a8e80, rem=0xffffffffffffffff) at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:49
49            LIBC_CANCEL_RESET (oldstate);
Mono support loaded.
(gdb) mono_backtrace 10
#0  clock_nanosleep (clock_id=1, flags=1, req=0x7fff271a8e80, rem=0xffffffffffffffff) at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:49
49            LIBC_CANCEL_RESET (oldstate);
#1  0x0000000000618c78 in SleepEx ()
#2  0x000000000058cc7a in ves_icall_System_Threading_Thread_Sleep_internal ()
#3 0x413215c2 in  (wrapper managed-to-native) System.Threading.Thread:Sleep_internal (int) + 0x52 (0x41321570 0x413215ee) [0x20ee4f0 - LobbyServer.exe]
#4  0x0000000002146a10 in ?? ()
#5  0x00007fff271a9410 in ?? ()
#6  0x00007f252cc01338 in ?? ()
#7  0x00007fff271a9410 in ?? ()
#8  0x00007f252cc00b18 in ?? ()
#9  0x0000000002139ac0 in ?? ()
(gdb) info threads
  Id   Target Id         Frame
  32   Thread 0x7f252b0ed700 (LWP 21187) "Finalizer" sem_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S:85
  31   Thread 0x7f252aeec700 (LWP 21188) "mono-sgen" 0x00007f25337f6b7d in poll () at ../sysdeps/unix/syscall-template.S:81
  30   Thread 0x7f2529e6f700 (LWP 21200) "Timer-Scheduler" pthread_cond_timedwait@@GLIBC_2.3.2 ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:238
  29   Thread 0x7f2529c6e700 (LWP 21202) "mono-sgen" 0x00007f2533801783 in epoll_wait () at ../sysdeps/unix/syscall-template.S:81
  28   Thread 0x7f2529c29700 (LWP 21203) "IO Threadpool w" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  27   Thread 0x7f2529be4700 (LWP 21204) "mono-sgen" pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
  26   Thread 0x7f25299df700 (LWP 21205) "mono-sgen" pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
  25   Thread 0x7f2529370700 (LWP 21207) "IO Threadpool w" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  24   Thread 0x7f252932f700 (LWP 21208) "Threadpool moni" clock_nanosleep (clock_id=1, flags=1, req=0x7f252932ed40, rem=0xffffffffffffffff)
    at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:49
  23   Thread 0x7f25292ee700 (LWP 21209) "Threadpool work"
../../gdb/dwarf2-frame.c:683: internal-error: Unknown CFI encountered.
A problem internal to GDB has been detected, further debugging may prove unreliable.
Quit this debugging session? (y or n) n
../../gdb/dwarf2-frame.c:683: internal-error: Unknown CFI encountered.
A problem internal to GDB has been detected, further debugging may prove unreliable.
Create a core file of GDB? (y or n) n
  22   Thread 0x7f25290a4700 (LWP 21211) "Threadpool work" sem_timedwait ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  21   Thread 0x7f2528e9b700 (LWP 21213) "Threadpool work" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  20   Thread 0x7f2528c9a700 (LWP 21214) "IO Threadpool w" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  19   Thread 0x7f2528c51700 (LWP 21216) "Threadpool work" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  18   Thread 0x7f2528a50700 (LWP 21217) "IO Threadpool w" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  17   Thread 0x7f2528a07700 (LWP 21219) "Threadpool work" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  16   Thread 0x7f2528806700 (LWP 21221) "Threadpool work" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  15   Thread 0x7f2528601700 (LWP 21223) "Threadpool work" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  14   Thread 0x7f25283fc700 (LWP 21235) "Threadpool work" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  13   Thread 0x7f24ebfff700 (LWP 21237) "Threadpool work" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  12   Thread 0x7f24ebc73700 (LWP 21240) "Threadpool work" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  11   Thread 0x7f24eba72700 (LWP 21242) "Threadpool work" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  10   Thread 0x7f24eb871700 (LWP 21244) "Threadpool work" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  9    Thread 0x7f24eb670700 (LWP 21246) "Threadpool work" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  8    Thread 0x7f24eb46f700 (LWP 21248) "Threadpool work" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  7    Thread 0x7f24eb1eb700 (LWP 21250) "Threadpool work" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  6    Thread 0x7f24eafea700 (LWP 21252) "Threadpool work" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  5    Thread 0x7f24eade9700 (LWP 21253) "Threadpool work" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  4    Thread 0x7f24eabe8700 (LWP 21254) "Threadpool work" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  3    Thread 0x7f24ea9e7700 (LWP 21266) "Threadpool work" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
  2    Thread 0x7f24ea7e6700 (LWP 21269) "Threadpool work" sem_timedwait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S:101
* 1    Thread 0x7f253481e780 (LWP 21185) "mono-sgen" clock_nanosleep (clock_id=1, flags=1, req=0x7fff271a8e80, rem=0xffffffffffffffff)
    at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:49




More information about the Mono-list mailing list