Merge "Add support for debugging ART to the dalvik.gdb script." into lmp-dev
This commit is contained in:
@@ -49,3 +49,62 @@ document dbt
|
|||||||
frame. If omitted r5 will be used as the default (as the case in the
|
frame. If omitted r5 will be used as the default (as the case in the
|
||||||
interpreter and JIT'ed code).
|
interpreter and JIT'ed code).
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# ART debugging. ART uses SIGSEGV signals for internal purposes. To allow
|
||||||
|
# gdb to debug programs using ART we need to treat this signal specially. We
|
||||||
|
# also set a breakpoint in a libart.so function to stop when the program
|
||||||
|
# hits an unexpected breakpoint
|
||||||
|
set $art_debug_enabled = 0
|
||||||
|
define art-on
|
||||||
|
if $art_debug_enabled == 0
|
||||||
|
# deal with SIGSEGV signals
|
||||||
|
handle SIGSEGV noprint nostop pass
|
||||||
|
|
||||||
|
# set a breakpoint and record its number
|
||||||
|
set breakpoint pending on
|
||||||
|
break art_sigsegv_fault
|
||||||
|
set $art_bpnum = $bpnum
|
||||||
|
commands $art_bpnum
|
||||||
|
silent
|
||||||
|
printf "Caught SIGSEGV in user program\n"
|
||||||
|
end
|
||||||
|
set breakpoint pending auto
|
||||||
|
|
||||||
|
printf "ART debugging mode is enabled.\n"
|
||||||
|
set $art_debug_enabled = 1
|
||||||
|
else
|
||||||
|
printf "ART debugging mode is already enabled.\n"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
document art-on
|
||||||
|
Enter ART debugging mode. In ART debugging mode, SIGSEGV signals are ignored
|
||||||
|
by gdb unless they are not handled by ART itself. A breakpoint is
|
||||||
|
set to stop the program when an unexpected SIGSEGV signal is
|
||||||
|
encountered.
|
||||||
|
|
||||||
|
To switch ART debugging mode off, use "art-off"
|
||||||
|
end
|
||||||
|
|
||||||
|
define art-off
|
||||||
|
if $art_debug_enabled == 1
|
||||||
|
# restore SIGSEGV to its default
|
||||||
|
handle SIGSEGV print stop pass
|
||||||
|
|
||||||
|
# delete our breakpoint
|
||||||
|
delete $art_bpnum
|
||||||
|
|
||||||
|
set $art_debug_enabled = 0
|
||||||
|
printf "ART debugging mode is disabled.\n"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
document art-off
|
||||||
|
Leave ART debugging mode. Signal handling is restored to default settings.
|
||||||
|
|
||||||
|
Use the command "art-on" to enable ART debugging mode.
|
||||||
|
end
|
||||||
|
|
||||||
|
# switch on ART debugging
|
||||||
|
art-on
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user