Hi, The attached patch fixes printing of Guile objects. It does so by querying the inferior Guile process for a textual representation of the values. Actually, support routines (namely `gdb_print ()') have been in Guile for a long time, but have never been used by GDB. I tested it with Guile 1.8, but it should also work with 1.6, and perhaps even with older versions. Example: Breakpoint 4, scm_sum (x=0xf2, y=0x6) at numbers.c:3953 3953 if (SCM_UNBNDP (y)) (gdb) set language scheme Warning: the current language does not match this frame. (gdb) frame #0 scm_sum (x=60, y=1) at numbers.c:3953 3953 if (SCM_UNBNDP (y)) Same with non-immediate values: Breakpoint 3, deval (x=0xb7c38978, env=0xb7bc7370) at eval.i.c:215 215 debug.prev = scm_i_last_debug_frame (); (gdb) set language scheme (gdb) frame #0 deval ( x=(#> (#> #@1+0 (#> #@0+0))), env=(((exp env) (false-if-exception (stat str)) (((str) "/home/ludo/.guile"))) ((f) #))) at eval.i.c:215 215 debug.prev = scm_i_last_debug_frame (); It's my first time hacking GDB, so please don't hesitate to correct me if the patch looks bad. I have not yet signed copyright assignment papers for GDB. I will do it if deemed necessary. Thanks, Ludovic. gdb/ChangeLog 2007-07-20 Ludovic Courtès * scm-lang.c (is_scmvalue_type): Don't check for `TYPE_CODE' of TYPE since it may lead to wrong results. * scm-valprint.c (scm_inferior_print): Use facilities provided by the inferior Guile process, namely `gdb_print ()'.