⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pending.exp

📁 gdb-6.8 Linux下的调试程序 最新版本
💻 EXP
字号:
#   Copyright 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc.# This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 3 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program.  If not, see <http://www.gnu.org/licenses/>.# This file was created by Jeff Johnston. (jjohnstn@redhat.com)if $tracelevel then {    strace $tracelevel}## test running programs#set prms_id 0set bug_id 0if {[skip_shlib_tests]} {    return 0}set testfile "pending"set libfile "pendshr"set srcfile $testfile.cset libsrc  $srcdir/$subdir/$libfile.cset binfile $objdir/$subdir/$testfileset lib_sl  $objdir/$subdir/$libfile.slset lib_opts  debugset exec_opts [list debug shlib=$lib_sl]if [get_compiler_info ${binfile}] {    return -1}if { [gdb_compile_shlib $libsrc $lib_sl $lib_opts] != ""     || [gdb_compile $srcdir/$subdir/$srcfile $binfile executable $exec_opts] != ""} {    untested "Could not compile either $libsrc or $srcdir/$subdir/$srcfile."    return -1}# Start with a fresh gdb.gdb_exitgdb_startgdb_reinitialize_dir $srcdir/$subdirgdb_load ${binfile}gdb_load_shlibs $lib_slif [target_info exists gdb_stub] {    gdb_step_for_stub;}## Test setting, querying, and modifying pending breakpoints#gdb_test_multiple "break pendfunc1" "set pending breakpoint" {     -re ".*Make breakpoint pending.*y or \\\[n\\\]. $" {	    gdb_test "y" "Breakpoint.*pendfunc1.*pending." "set pending breakpoint"     }}gdb_test "info break" \    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*\[0-9\]+\[\t \]+breakpoint     keep y.*PENDING.*pendfunc1.*" \"single pending breakpoint info"## Test breaking at existing function#set mainline [gdb_get_line_number "break main here"]gdb_test "break main" \    "Breakpoint.*at.* file .*$srcfile, line $mainline.*" \    "breakpoint function"gdb_test "info break" \    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*\[0-9\]+\[\t \]+breakpoint     keep y.*PENDING.*pendfunc1.*\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:$mainline" \"pending plus real breakpoint info"# # Test not setting a pending breakpoint #gdb_test_multiple "break pendfunc2" "Don't set pending breakpoint" {     -re ".*Make breakpoint pending.*y or \\\[n\\\]. $" {	    gdb_test "n" "" "Don't set pending breakpoint"     }}## Add condition to pending breakpoint #gdb_test "condition 1 k == 1" ""gdb_test "info break" \    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*\[0-9\]+\[\t \]+breakpoint     keep y.*PENDING.*pendfunc1.*\[\t \]+stop only if k == 1.*\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:$mainline" \"pending plus condition"## Disable pending breakpoint#gdb_test "disable 1" ""gdb_test "info break" \    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*\[0-9\]+\[\t \]+breakpoint     keep n.*PENDING.*pendfunc1.*\[\t \]+stop only if k == 1.*\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:$mainline" \"pending disabled"## Add commands to pending breakpoint#gdb_test "commands 1\nprint k\nend" "" \        "Set commands for pending breakpoint"gdb_test "info break" \    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*\[0-9\]+\[\t \]+breakpoint     keep n.*PENDING.*pendfunc1.*\[\t \]+stop only if k == 1.*\[\t \]+print k.*\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:$mainline" \"pending disabled plus commands"## Try a pending break for a line in a source file with a condition#set bp2_loc [gdb_get_line_number "y = x + 4" ${libfile}.c]gdb_test_multiple "break pendshr.c:$bp2_loc if x > 3" "Set pending breakpoint 2" {     -re ".*Make breakpoint pending.*y or \\\[n\\\]. $" {	    gdb_test "y" "Breakpoint.*pendshr.c:$bp2_loc.*pending." \		"Set pending breakpoint 2"     }}gdb_test "info break" \    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*\[0-9\]+\[\t \]+breakpoint     keep n.*PENDING.*pendfunc1.*\[\t \]+stop only if k == 1.*\[\t \]+print k.*\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:$mainline.*\[0-9\]+\[\t \]+breakpoint     keep y.*PENDING.*pendshr.c:$bp2_loc if x > 3.*" \"multiple pending breakpoints"## Try a pending break for a line in a source file with ignore count:#set bp3_loc [gdb_get_line_number "printf" ${libfile}.c]gdb_test_multiple "break pendshr.c:$bp3_loc" "Set pending breakpoint 3" {     -re ".*Make breakpoint pending.*y or \\\[n\\\]. $" {	    gdb_test "y" "Breakpoint.*pendshr.c:$bp3_loc.*pending." \		"Set pending breakpoint 3"     }}gdb_test {ignore $bpnum 2} "Will ignore next 2 crossings of breakpoint .*" \    "set ignore count on pending breakpoint 3"gdb_test "info break" \    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*\[0-9\]+\[\t \]+breakpoint     keep n.*PENDING.*pendfunc1.*\[\t \]+stop only if k == 1.*\[\t \]+print k.*\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:$mainline.*\[0-9\]+\[\t \]+breakpoint     keep y.*PENDING.*pendshr.c:$bp2_loc if x > 3.*\[0-9\]+\[\t \]+breakpoint     keep y.*PENDING.*pendshr.c:$bp3_loc.*ignore next 2 hits.*" \"multiple pending breakpoints 2"## Run to main which should resolve a pending breakpoint#gdb_run_cmdgdb_test "" \".*Breakpoint.*, main.*$mainline.*" \"running to main"## Re-enable the first pending breakpoint which should resolve#gdb_test "enable 1" \"" \"re-enabling pending breakpoint that can resolve instantly"## Continue to verify conditionals and commands for breakpoints are honored#gdb_test "continue" \".*Breakpoint.*pendfunc1.*at.*pendshr.c:$bp2_loc.*4;" \"continue to resolved breakpoint 2"gdb_test "continue" \".*Breakpoint.*pendfunc1.*at.*pendshr.c:$bp2_loc.*\[$\]1 = 1." \"continue to resolved breakpoint 1"## Disable the other two breakpoints, and continue to the one with# the ignore count.  Make sure you hit it the third time, x should# be 3 then.#gdb_test "disable 7" "" "Disable other breakpoints"gdb_test "disable 5" "" "Disable other breakpoints"gdb_test "continue" \	 ".*Breakpoint.*pendfunc1.*\\\(x=3\\\) at.*pendshr.c:$bp3_loc.*printf.*;" \"continue to resolved breakpoint 3"delete_breakpointsgdb_breakpoint "main"## Set non-existent pending breakpoint#gdb_test_multiple "break imaginary" "set imaginary pending breakpoint" {     -re ".*Make breakpoint pending.*y or \\\[n\\\]. $" {	    gdb_test "y" "Breakpoint.*imaginary.*pending." \		"set imaginary pending breakpoint"     }}## rerun program and make sure that any pending breakpoint remains and no# error messages are issued for the missing function#rerun_to_maingdb_test "info break" \    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:$mainline.*\[0-9\]+\[\t \]+breakpoint     keep y.*PENDING.*imaginary.*" \"verify pending breakpoint after restart"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -