eclair-dump-backtrace: expect script to dump backtrace on all CPUs
Change-Id: I358c5d5ca81903b0eaab88d227c36373164c0950
This commit is contained in:
committed by
Masamichi Takagi
parent
a37f72da0e
commit
07537cd2e7
@@ -210,10 +210,14 @@ add_subdirectory(tools/crash)
|
|||||||
configure_file(scripts/mcreboot-smp.sh.in mcreboot.sh @ONLY)
|
configure_file(scripts/mcreboot-smp.sh.in mcreboot.sh @ONLY)
|
||||||
configure_file(scripts/mcstop+release-smp.sh.in mcstop+release.sh @ONLY)
|
configure_file(scripts/mcstop+release-smp.sh.in mcstop+release.sh @ONLY)
|
||||||
configure_file(scripts/mcreboot.1in mcreboot.1 @ONLY)
|
configure_file(scripts/mcreboot.1in mcreboot.1 @ONLY)
|
||||||
|
configure_file(scripts/eclair-dump-backtrace.exp.in eclair-dump-backtrace.exp @ONLY)
|
||||||
install(PROGRAMS
|
install(PROGRAMS
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/mcreboot.sh"
|
"${CMAKE_CURRENT_BINARY_DIR}/mcreboot.sh"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/mcstop+release.sh"
|
"${CMAKE_CURRENT_BINARY_DIR}/mcstop+release.sh"
|
||||||
DESTINATION "${CMAKE_INSTALL_SBINDIR}")
|
DESTINATION "${CMAKE_INSTALL_SBINDIR}")
|
||||||
|
install(PROGRAMS
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/eclair-dump-backtrace.exp"
|
||||||
|
DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||||
install(FILES "scripts/irqbalance_mck.in"
|
install(FILES "scripts/irqbalance_mck.in"
|
||||||
DESTINATION "${CMAKE_INSTALL_SYSCONFDIR}")
|
DESTINATION "${CMAKE_INSTALL_SYSCONFDIR}")
|
||||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/mcreboot.1"
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/mcreboot.1"
|
||||||
|
|||||||
96
scripts/eclair-dump-backtrace.exp.in
Executable file
96
scripts/eclair-dump-backtrace.exp.in
Executable file
@@ -0,0 +1,96 @@
|
|||||||
|
#!/usr/bin/expect
|
||||||
|
|
||||||
|
set INST_DIR "@prefix@"
|
||||||
|
|
||||||
|
spawn $INST_DIR/bin/eclair -k $INST_DIR/smp-@ARCH@/kernel/mckernel.img -i -l
|
||||||
|
|
||||||
|
set state "init"
|
||||||
|
set thread_id 0
|
||||||
|
set timeout -1
|
||||||
|
|
||||||
|
expect {
|
||||||
|
"Quit anyway? (y or n) " {
|
||||||
|
send "y\r"
|
||||||
|
wait
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
"Unknown thread*" {
|
||||||
|
send "quit\r"
|
||||||
|
exp_continue
|
||||||
|
}
|
||||||
|
"in ?? ()" {
|
||||||
|
switch -- $state {
|
||||||
|
"thread_chosen" {
|
||||||
|
set state "thread_skip"
|
||||||
|
}
|
||||||
|
"thread_bt" {
|
||||||
|
set state "thread_skip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exp_continue
|
||||||
|
}
|
||||||
|
"(eclair) " {
|
||||||
|
switch -- $state {
|
||||||
|
"init" {
|
||||||
|
set state "threads_list"
|
||||||
|
send "info threads\r"
|
||||||
|
}
|
||||||
|
"threads_list" {
|
||||||
|
incr thread_id
|
||||||
|
set state "thread_chosen"
|
||||||
|
send "thread $thread_id\r"
|
||||||
|
}
|
||||||
|
"thread_bt" {
|
||||||
|
incr thread_id
|
||||||
|
set state "thread_chosen"
|
||||||
|
send "thread $thread_id\r"
|
||||||
|
}
|
||||||
|
"thread_skip" {
|
||||||
|
incr thread_id
|
||||||
|
set state "thread_chosen"
|
||||||
|
send "thread $thread_id\r"
|
||||||
|
}
|
||||||
|
"thread_chosen" {
|
||||||
|
set state "thread_bt"
|
||||||
|
send "bt\r"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exp_continue
|
||||||
|
}
|
||||||
|
"Type <RET> for more, q to quit, c to continue without paging--" {
|
||||||
|
switch -- $state {
|
||||||
|
"threads_list" {
|
||||||
|
send "\r"
|
||||||
|
}
|
||||||
|
"thread_bt" {
|
||||||
|
send "q\r"
|
||||||
|
}
|
||||||
|
"thread_skip" {
|
||||||
|
send "q\r"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exp_continue
|
||||||
|
}
|
||||||
|
"Type <return> to continue, or q <return> to quit" {
|
||||||
|
switch -- $state {
|
||||||
|
"threads_list" {
|
||||||
|
send "\r"
|
||||||
|
}
|
||||||
|
"thread_bt" {
|
||||||
|
send "\r"
|
||||||
|
}
|
||||||
|
"thread_skip" {
|
||||||
|
send "q\r"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exp_continue
|
||||||
|
}
|
||||||
|
" not known." {
|
||||||
|
expect "(eclair) " { send "quit\r" }
|
||||||
|
expect "Quit anyway? (y or n) " { send "y\r" }
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user