2009-10-09 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Fri, 9 Oct 2009 15:24:49 +0000 (15:24 -0000)
committerZoltan Varga <vargaz@gmail.com>
Fri, 9 Oct 2009 15:24:49 +0000 (15:24 -0000)
* driver.c (parse_debug_options): Add a 'gdb' option.

* mini.c (mini_parse_debug_options): Add a 'gdb' option.

svn path=/trunk/mono/; revision=143877

mono/mini/ChangeLog
mono/mini/driver.c
mono/mini/mini.c
mono/mini/mini.h

index 074334cf7ebf555520081ad80c68fe159ddb3190..a87d6c9c5ea30b1a657d2af9ab67cc712faf7317 100644 (file)
@@ -1,5 +1,9 @@
 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
 
+       * driver.c (parse_debug_options): Add a 'gdb' option.
+
+       * mini.c (mini_parse_debug_options): Add a 'gdb' option.
+
        * image-writer.c: Add support for emitting the image into a memory buffer.
 
        * dwarfwriter.c: Add support for sharing one IL file between multiple images.
index fcebec33f3c362231137bd03922acf9ccd04d8ae..36e0b764eb4a6d98f3404f370cb5e7ec939c3731 100644 (file)
@@ -214,6 +214,9 @@ parse_debug_options (const char* p)
                } else if (!strncmp (p, "mdb-optimizations", 17)) {
                        opt->mdb_optimizations = TRUE;
                        p += 17;
+               } else if (!strncmp (p, "gdb", 3)) {
+                       opt->gdb = TRUE;
+                       p += 3;
                } else {
                        fprintf (stderr, "Invalid debug option `%s', use --help-debug for details\n", p);
                        return FALSE;
index 7773f9ac57a2f3d091364dbc37d82dec3e354d09..41b171657289aca9f6a88612e134cd1ff3d87910 100644 (file)
@@ -4801,9 +4801,11 @@ mini_parse_debug_options (void)
                        mono_dont_free_domains = TRUE;
                else if (!strcmp (arg, "dyn-runtime-invoke"))
                        debug_options.dyn_runtime_invoke = TRUE;
+               else if (!strcmp (arg, "gdb"))
+                       debug_options.gdb = TRUE;
                else {
                        fprintf (stderr, "Invalid option for the MONO_DEBUG env variable: %s\n", arg);
-                       fprintf (stderr, "Available options: 'handle-sigint', 'keep-delegates', 'collect-pagefault-stats', 'break-on-unverified', 'no-gdb-backtrace', 'dont-free-domains', 'suspend-on-sigsegv', 'dyn-runtime-invoke'\n");
+                       fprintf (stderr, "Available options: 'handle-sigint', 'keep-delegates', 'collect-pagefault-stats', 'break-on-unverified', 'no-gdb-backtrace', 'dont-free-domains', 'suspend-on-sigsegv', 'dyn-runtime-invoke', 'gdb'\n");
                        exit (1);
                }
        }
@@ -4980,12 +4982,19 @@ mini_init (const char *filename, const char *runtime_version)
 
        mini_gc_init ();
 
+       if (getenv ("MONO_DEBUG") != NULL)
+               mini_parse_debug_options ();
+
        if (getenv ("MONO_XDEBUG")) {
                char *xdebug_opts = getenv ("MONO_XDEBUG");
                mono_xdebug_init (xdebug_opts);
                /* So methods for multiple domains don't have the same address */
                mono_dont_free_domains = TRUE;
                mono_using_xdebug = TRUE;
+       } else if (mini_get_debug_options ()->gdb) {
+               mono_xdebug_init ((char*)"gdb");
+               mono_dont_free_domains = TRUE;
+               mono_using_xdebug = TRUE;
        }
 
 #ifdef ENABLE_LLVM
@@ -4997,9 +5006,6 @@ mini_init (const char *filename, const char *runtime_version)
        if (!g_thread_supported ())
                g_thread_init (NULL);
 
-       if (getenv ("MONO_DEBUG") != NULL)
-               mini_parse_debug_options ();
-
        mono_gc_base_init ();
 
        mono_jit_tls_id = TlsAlloc ();
index 99d20a14e2684018e60f4a90b21415058074a091..d28dcf78078f14e680427282faad42351e64c3ac 100644 (file)
@@ -1240,6 +1240,7 @@ typedef struct {
        gboolean no_gdb_backtrace;
        gboolean suspend_on_sigsegv;
        gboolean dyn_runtime_invoke;
+       gboolean gdb;
 } MonoDebugOptions;
 
 enum {