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

📄 freebpcmd.exp

📁 gdb-6.8 Linux下的调试程序 最新版本
💻 EXP
字号:
#   Copyright 2003, 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 is a regression test for the following bug, as of 2003-12-12:## Set a breakpoint which will be hit many times.  Attach a complex set# of commands to it, including a "continue" command.  Run the program,# so that the breakpoint is hit, its commands get executed, and the# program continues and hits the breakpoint again.  You will see# messages like "warning: Invalid control type in command structure.",# or maybe GDB will crash.## When the breakpoint is hit, bpstat_stop_status copies the# breakpoint's command tree to the bpstat.  bpstat_do_actions then# calls execute_control_command to run the commands.  The 'continue'# command invokes the following chain of calls:##   continue_command#     -> clear_proceed_status#       -> bpstat_clear#         -> free_command_lines#            -> frees the commands we are currently running.## When control does eventually return to execute_control_command, GDB# continues to walk the tree of freed command nodes, resulting in the# error messages and / or crashes.## Since this bug depends on storage being reused between the time that# we continue and the time that we fall back to bpstat_do_actions, the# reproduction recipe is more delicate than I would like.  I welcome# suggestions for improving this.set prms_id 0set bug_id 0set testfile "freebpcmd"set srcfile ${testfile}.cset srcfile1 ${testfile}1.cset binfile ${objdir}/${subdir}/${testfile}if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {     untested freebpcmd.exp     return -1}gdb_exitgdb_startgdb_reinitialize_dir $srcdir/$subdirgdb_load ${binfile}gdb_test "break [gdb_get_line_number "euphonium"]" "" "set breakpoint"# The goal of all this is to make sure that there's plenty of memory# churn, and different amounts of it each time the inferior stops;# this seems to make GDB crash more reliably.set lines {{if (i%2) == 0}           {echo "even "}           {print i}           {else}           {echo "odd "}           {print i}           {end}           {set variable $foo = 0}           {set variable $j = 0}           {while $j < i}           {set variable $foo += $j}           {set variable $j++}           {end}           {print $foo}           {if i != 40}           {c}           {end}           {end}}send_gdb "commands\n"for {set i 0} {$i < [llength $lines]} {incr i} {    gdb_expect {        -re ".*>" {            send_gdb "[lindex $lines $i]\n"        }        -re "$gdb_prompt $" {            set reason "got top-level prompt early"            break        }        timeout {            set reason "timeout"            break        }    }}if {$i >= [llength $lines]} {    pass "send breakpoint commands"} else {    fail "send breakpoint commands ($reason)"}gdb_run_cmdset timeout 120gdb_test_multiple "" "run program with breakpoint commands" {    -re "warning: Invalid control type in command structure" {        kfail "gdb/1489" "run program with breakpoint commands"    }    -re "$gdb_prompt $" {        pass "run program with breakpoint commands"    }    eof {        kfail "gdb/1489" "run program with breakpoint commands (GDB died)"    }}

⌨️ 快捷键说明

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