about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--docs/USAGE.md1
-rw-r--r--src/libtools/signals.c4
-rw-r--r--src/main.c4
-rw-r--r--src/tools/rcfile.c2
4 files changed, 7 insertions, 4 deletions
diff --git a/docs/USAGE.md b/docs/USAGE.md
index 21efad7e..ebbc7f81 100644
--- a/docs/USAGE.md
+++ b/docs/USAGE.md
@@ -333,6 +333,7 @@ Define x86_64 bash to launch script
  * 2 : Launch `gdbserver` when a segfault, bus error or illegal instruction signal is trapped, attached to the offending process, and go in an endless loop, waiting.

  Use `gdb /PATH/TO/box64` and then `target remote 127.0.0.1:1234` to connect to the gdbserver (or use actual IP if not on the machine). After that, the procedure is the same as with ` BOX64_JITGDB=1`.

  This mode can be usefullwhen programs redirect all console output to a file (like Unity3D Games)

+ * 3 : Launch `lldb` when a segfault, bus error or illegal instruction signal is trapped, attached to the offending process and go in an endless loop, waiting.

 

 #### BOX64_NORCFILES

 If the env var exist, no rc files (like /etc/box64.box64rc and ~/.box64rc) will be loaded

diff --git a/src/libtools/signals.c b/src/libtools/signals.c
index f9d510b7..d79691af 100644
--- a/src/libtools/signals.c
+++ b/src/libtools/signals.c
@@ -1494,8 +1494,10 @@ exit(-1);
                 sprintf(myarg, "%d", pid);
                 if(jit_gdb==2)
                     execlp("gdbserver", "gdbserver", "127.0.0.1:1234", "--attach", myarg, (char*)NULL);
-                else
+                else if(jit_gdb==3)
                     execlp("lldb", "lldb", "-p", myarg, (char*)NULL);
+                else
+                    execlp("gdb", "gdb", "-pid", myarg, (char*)NULL);
                 exit(-1);
             }
         }
diff --git a/src/main.c b/src/main.c
index 26185aeb..db33d9a2 100644
--- a/src/main.c
+++ b/src/main.c
@@ -947,11 +947,11 @@ void LoadLogEnv()
     p = getenv("BOX64_JITGDB");
     if(p) {
         if(strlen(p)==1) {
-            if(p[0]>='0' && p[0]<='0'+2)
+            if(p[0]>='0' && p[0]<='0'+3)
                 jit_gdb = p[0]-'0';
         }
         if(jit_gdb)
-            printf_log(LOG_INFO, "Launch %s on segfault\n", (jit_gdb==2)?"gdbserver":"gdb");
+            printf_log(LOG_INFO, "Launch %s on segfault\n", (jit_gdb==2)?"gdbserver":((jit_gdb==3)?"lldb":"gdb"));
     }
     p = getenv("BOX64_SHOWSEGV");
         if(p) {
diff --git a/src/tools/rcfile.c b/src/tools/rcfile.c
index d04683a1..6b0f6206 100644
--- a/src/tools/rcfile.c
+++ b/src/tools/rcfile.c
@@ -102,7 +102,7 @@ ENTRYBOOL(BOX64_NOGTK, box64_nogtk)                     \
 ENTRYBOOL(BOX64_NOVULKAN, box64_novulkan)               \
 ENTRYBOOL(BOX64_FUTEX_WAITV, box64_futex_waitv)         \
 ENTRYSTRING_(BOX64_BASH, bash)                          \
-ENTRYINT(BOX64_JITGDB, jit_gdb, 0, 2, 2)                \
+ENTRYINT(BOX64_JITGDB, jit_gdb, 0, 3, 2)                \
 ENTRYBOOL(BOX64_NOSANDBOX, box64_nosandbox)             \
 ENTRYBOOL(BOX64_INPROCESSGPU, box64_inprocessgpu)       \
 ENTRYBOOL(BOX64_EXIT, want_exit)                        \