@@ -66,12 +66,19 @@ export class LLDBDebugConfigurationProvider implements vscode.DebugConfiguration
6666 dbgConfig.androidLldbServerSocket = socket;
6767
6868 dbgConfig.initCommands = (dbgConfig.initCommands instanceof Array) ? dbgConfig.initCommands : [];
69- // Improve Android debugging by ignoring SIGBUS and SIGSEGV signal, see https://issuetracker.google.com/issues/240007217#comment17
70- dbgConfig.initCommands.unshift(`process handle SIGBUS SIGSEGV --pass true --stop false --notify false`);
71- dbgConfig.initCommands.unshift(`platform connect unix-abstract-connect://[${target.udid}]${socket}`);
72- dbgConfig.initCommands.unshift(`platform select remote-android`);
7369
74- dbgConfig.initCommands.push(`settings set plugin.jit-loader.gdb.enable off`);
70+ dbgConfig.initCommands.unshift(
71+ "platform select remote-android",
72+ `platform connect unix-abstract-connect://[${target.udid}]${socket}`,
73+ "settings set plugin.jit-loader.gdb.enable off",
74+
75+ // Ignoring SIGBUS and SIGSEGV signal, see https://issuetracker.google.com/issues/240007217#comment17
76+ // Set breakpoints on unhandled signal handlers in libart.so to break on these signals instead
77+ "process handle SIGBUS SIGSEGV --pass true --stop false --notify false",
78+ "breakpoint set --shlib libart.so --name art_sigsegv_fault",
79+ "breakpoint set --shlib libart.so --name art_sigbus_fault",
80+ );
81+
7582 if (dbgConfig.symbolSearchPaths) {
7683 for (let symbolSeachPath of dbgConfig.symbolSearchPaths) {
7784 dbgConfig.initCommands.push(`settings append target.exec-search-paths '${symbolSeachPath}'`);
0 commit comments