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

📄 completion.exp

📁 gdb是linux下的一个远程调试环境.能让你很方便地调试linux下的代码.
💻 EXP
📖 第 1 页 / 共 2 页
字号:
		gdb_expect {		    -re ".*$gdb_prompt $" { fail "complete 'p \"break'"}		    timeout           {fail "(timeout) complete 'p \"break'"}		}	    }        -re ".*$gdb_prompt $"       { fail "complete 'p \"break'" }        timeout         { fail "(timeout) complete 'p \"break'" }        }setup_xfail "*-*-*"send_gdb "p \"break.\t"sleep 1gdb_expect  {        -re "^p \"break\\.\\\x07$"\            { send_gdb "\n"              gdb_expect {                      -re ".*$gdb_prompt $" { fail "complete 'p \"break.'"}                      timeout           {fail "(timeout) complete 'p \"break.'"}                     }            }	-re "^p \"break\\.c\"$"\	    {	send_gdb "\n"		gdb_expect {		    -re ".*$gdb_prompt $" { pass "complete 'p \"break.'"}		    timeout           {fail "(timeout) complete 'p \"break.'"}		}	    }	-re "^p \"break\\..*$"	    {	send_gdb "\n"		gdb_expect {		    -re ".*$gdb_prompt $" { fail "complete 'p \"break.'"}		    timeout           {fail "(timeout) complete 'p \"break.'"}		}	    }        -re ".*$gdb_prompt $"       { fail "complete 'p \"break.'" }        timeout         { fail "(timeout) complete 'p \"break.'" }        }send_gdb "p 'a\t"sleep 1gdb_expect  {        -re "^p 'a\\\x07$"\            { send_gdb "\n"              gdb_expect {                      -re "Invalid character constant\\..*$gdb_prompt $"\                                        { pass "complete 'p \'a'"}                      -re ".*$gdb_prompt $" { fail "complete 'p \'a'"}                      timeout           {fail "(timeout) complete 'p \'a'"}                     }            }        -re ".*$gdb_prompt $"       { fail "complete 'p \'a'" }        timeout         { fail "(timeout) complete 'p \'a'" }        }send_gdb "p 'a\t"sleep 1gdb_expect {    -re "^p 'a\\\x07$" {	send_gdb "\t"	gdb_expect {	    -re ".*argv.*$gdb_prompt p .a$" {		send_gdb "\n"		gdb_expect {		    -re "Invalid character constant\\..*$gdb_prompt $" {			pass "complete (2) 'p \'a'"		    }		    -re ".*$gdb_prompt $" { fail "complete (2) 'p \'a'" }		    timeout { fail "(timeout) complete (2) 'p \'a'" }		}	    }	    -re "(There are $decimal possibilities\\.  Do you really\r\nwish to see them all.|Display all $decimal possibilities.) \\(y or n\\)$" {		send_gdb "n"		gdb_expect {		    -re "\\(gdb\\) p 'a$" {			send_gdb "\n"			gdb_expect {			    -re "Invalid character constant\\..*$gdb_prompt $" {				pass "complete (2) 'p \'a'"			    }			    -re ".*$gdb_prompt $" { 				fail "complete (2) 'p \'a'"			    }			    timeout { fail "(timeout) complete (2) 'p \'a'" }			}		    }		    -re ".*$gdb_prompt $" { fail "complete (2) 'p \'a'" }		    timeout { fail "(timeout) complete (2) 'p \'a'" }		}	    }	    -re ".*$gdb_prompt $" { fail "complete (2) 'p \'a'" }	    timeout { fail "(timeout) complete (2) 'p \'a'" }	}    }    -re ".*$gdb_prompt $" { fail "complete (2) 'p \'a'" }    timeout { fail "(timeout) complete (2) 'p \'a'" }}# These tests used to try completing the shorter "p b-a".# Unfortunately, on some systems, there are .o files in system# libraries which declare static variables named `b'.  Of course,# those variables aren't really in scope, as far as the compiler is# concerned.  But GDB deliberately tries to be more liberal: if you# enter an identifier that doesn't have any binding in scope, GDB will# search all the program's compilation units for a static variable of# the given name.## This behavior can help avoid a lot of pedantry, so it's usually a# good thing.  But in this test case, it causes GDB to print the value# of some random variable, instead of giving us the "No symbol..."# error we were expecting.## For example, on S/390 linux, the file s_atan.c in libm.a declares a# `b', which is a structure containing an int and a float, so GDB says# ``Argument to arithmetic operation not a number or boolean'' instead# of ``No symbol ...''.## So, I'm hoping that there is no system with a static library variable named# `no_var_by_this_name'.send_gdb "p no_var_named_this-a\t"sleep 1gdb_expect {    -re "^p no_var_named_this-a\\\x07$" {        send_gdb "\n"        gdb_expect {            -re "No symbol \"no_var_named_this\" in current context\\..*$gdb_prompt $" {                pass "complete 'p no_var_named_this-a'"            }            -re ".*$gdb_prompt $" {                fail "complete 'p no_var_named_this-a'"            }            timeout {                fail "(timeout) complete 'p no_var_named_this-a'"            }        }    }    -re ".*$gdb_prompt $" {        fail "complete 'p no_var_named_this-a'"    }    timeout {        fail "(timeout) complete 'p no_var_named_this-a'"    }}send_gdb "p no_var_named_this-a\t"sleep 1gdb_expect {    -re "^p no_var_named_this-a\\\x07$" {	send_gdb "\t"	gdb_expect {	    -re ".*argv.*$gdb_prompt p no_var_named_this-a$" {		send_gdb "\n"		gdb_expect {		    -re "No symbol \"no_var_named_this\" in current context\\..*$gdb_prompt $" {			pass "complete (2) 'p no_var_named_this-a'"		    }		    -re ".*$gdb_prompt $" {                        fail "complete (2) 'p no_var_named_this-a'"                    }		    timeout {                        fail "(timeout) complete (2) 'p no_var_named_this-a'"                    }		}	    }	    -re "(There are $decimal possibilities\\.  Do you really\r\nwish to see them all.|Display all $decimal possibilities.) \\(y or n\\)$" {		send_gdb "n"		gdb_expect {		    -re "\\(gdb\\) p no_var_named_this-a$" {			send_gdb "\n"			gdb_expect {			    -re "No symbol \"no_var_named_this\" in current context\\..*$gdb_prompt $" {				pass "complete (2) 'p no_var_named_this-a'"			    }			    -re ".*$gdb_prompt $" {				fail "complete (2) 'p no_var_named_this-a'"			    }			    timeout {                                fail "(timeout) complete (2) 'p no_var_named_this-a'"                            }			}		    }		    -re ".*$gdb_prompt $" {                        fail "complete (2) 'p no_var_named_this-a'"                    }		    timeout {                        fail "(timeout) complete (2) 'p no_var_named_this-a'"                    }		}	    }	    -re ".*$gdb_prompt $" {                fail "complete (2) 'p no_var_named_this-a'"            }	    timeout { fail "(timeout) complete (2) 'p no_var_named_this-a'" }        }    }    -re ".*$gdb_prompt $" { fail "complete (2) 'p no_var_named_this-a'" }    timeout { fail "(timeout) complete (2) 'p no_var_named_this-a'" }}send_gdb "p no_var_named_this-\t"sleep 1gdb_expect  {    -re "^p no_var_named_this-\\\x07$" {	send_gdb "\t"	gdb_expect {	    -re "(There are $decimal possibilities\\.  Do you really\r\nwish to see them all.|Display all $decimal possibilities.) \\(y or n\\)$" {		send_gdb "n"		gdb_expect {		    -re "\\(gdb\\) p no_var_named_this-$" {			send_gdb "\n"			gdb_expect {			    -re "No symbol \"no_var_named_this\" in current context\\..*$gdb_prompt $" {				pass "complete (2) 'p no_var_named_this-'"			    }			    -re ".*$gdb_prompt $" {				fail "complete (2) 'p no_var_named_this-'"			    }			    timeout {                                fail "(timeout) complete (2) 'p no_var_named_this-'"                            }			}		    }		    -re ".*$gdb_prompt $" {                        fail "complete (2) 'p no_var_named_this-'"                    }		    timeout {                        fail "(timeout) complete (2) 'p no_var_named_this-'"                    }		}	    }	    -re ".*$gdb_prompt $" {                fail "complete (2) 'p no_var_named_this-'"            }	    timeout { fail "(timeout) complete (2) 'p no_var_named_this-'" }	}    }    -re ".*$gdb_prompt $" { fail "complete (2) 'p no_var_named_this-'" }    timeout { fail "(timeout) complete (2) 'p no_var_named_this-'" }}# The following tests used to simply try to complete `${objdir}/Make',# and so on.  The problem is that ${objdir} can be very long; the# completed filename may be more than eighty characters wide.  When# this happens, readline tries to manage things, producing output that# may make sense on the screen, but is rather hard for our script to# recognize.## In the case that motivated this change, the (gdb) prompt occupied# the leftmost six columns, and `${objdump}/' was seventy-four# characters long --- eighty in all.  After printing the slash,# readline emitted a space, a carriage return, and then `Makefile'# (the tab character being received as input after `Make'.## Basically, you have to let readline do whatever it's going to do to# make the screen look right.  If it happens to use a different# strategy on Tuesdays to get the cursor in the right place, that's# not something the testsuite should care about.## So, we avoid long lines.  We `cd' to ${objdir} first, and then do# the completion relative to the current directory.gdb_test "cd ${objdir}" "Working directory ${objdir}.*" "cd to \${objdir}"send_gdb "file ./Make\t"sleep 1gdb_expect  {        -re "file ./Makefile.*$"\            { send_gdb "\n"              gdb_expect {                      -re "\r\nA program is being debugged already\\.  Kill it\\? \\(y or n\\) $"\                      { send_gdb "n\n"                        gdb_expect {                                -re "\r\nProgram not killed\\.\r\n$gdb_prompt $"\                                        { pass "complete 'file ./Make'"}                                -re ".*$gdb_prompt $" { fail "complete 'file ./Make'"}                                timeout           {fail "(timeout) complete 'file ./Make'"}                               }                      }                      -re ".*$gdb_prompt $" { fail "complete 'file ./Make'"}                      timeout           {fail "(timeout) complete 'file ./Make'"}                     }            }        -re ".*$gdb_prompt $"       { fail "complete 'file ./Make'" }        timeout         { fail "(timeout) complete 'file ./Make'" }        }# ${srcdir} may be a relative path.  We want to make sure we end up# in the right directory - so make sure we know where it is.set mydir [pwd]cd ${srcdir}set fullsrcdir [pwd]cd ${mydir}gdb_test "cd ${fullsrcdir}" "Working directory ${fullsrcdir}.*" "cd to \${srcdir}"send_gdb "file ./gdb.base/compl\t"sleep 1gdb_expect  {        -re "^file ./gdb.base/completion\\.exp $"\            { send_gdb "\n"              gdb_expect {                      -re "\r\nA program is being debugged already\\.  Kill it\\? \\(y or n\\) $"\                      { send_gdb "n\n"                        gdb_expect {                                -re "\r\nProgram not killed\\.\r\n$gdb_prompt $"\                                        { pass "complete 'file ./gdb.base/compl'"}                                -re ".*$gdb_prompt $" { fail "complete 'file ./gdb.base/compl'"}                                timeout           {fail "(timeout) complete 'file ./gdb.base/compl'"}                               }                      }                      -re ".*$gdb_prompt $" { fail "complete 'file ./gdb.base/compl'"}                      timeout           {fail "(timeout) complete 'file ./gdb.base/compl'"}                     }            }        -re ".*$gdb_prompt $"       { fail "complete 'file ./gdb.base/compl'" }        timeout         { fail "(timeout) complete 'file ./gdb.base/compl'" }        }send_gdb "info func mark\t"sleep 1gdb_expect  {        -re "^info func mark.*er$"\            {	      send_gdb "\t\t"              sleep 3              gdb_expect {                      -re "marker1.*$gdb_prompt info func marker$"\                      { send_gdb "\n"                        gdb_expect {                                -re "All functions matching regular expression \"marker\":.*File.*break.c:\r\nint marker1\\(\\);\r\nint marker2\\(int\\).*marker3\\(char.*char.*\\).*marker4\\(long int\\);.*$gdb_prompt $"\                                                  { pass "complete 'info func mar'"}                                -re ".*$gdb_prompt $" { fail "complete 'info func mar'"}                                timeout           {fail "(timeout) complete 'info func mar'"}                               }                      }                      -re ".*$gdb_prompt $" { fail "complete 'info func mar'"}                      timeout           {fail "(timeout) complete 'info func mar'"}                     }            }        -re ".*$gdb_prompt $"       { fail "complete 'info func mar'" }        timeout         { fail "(timeout) complete 'info func mar'" }        }send_gdb "set follow-fork-mode \t\t"sleep 1gdb_expect  {        -re "ask.*child.*parent.*$gdb_prompt set follow-fork-mode $"\            { send_gdb "\n"              gdb_expect {                      -re "Requires an argument.*ask.*child.*parent.*$gdb_prompt $"\                                        { pass "complete 'set follow-fork-mode'"}                      -re "Ambiguous item \"\"\\..*$gdb_prompt $"\                                        { pass "complete 'set follow-fork-mode'"}                      -re ".*$gdb_prompt $" { fail "complete 'set follow-fork-mode'"}                      timeout           {fail "(timeout) complete 'set follow-fork-mode'"}                     }            }        -re ".*$gdb_prompt $"       { fail "complete 'set follow-fork-mode'" }        timeout         { fail "(timeout) complete 'set follow-fork-mode'" }        }# Restore globals modified in this test...if [info exists old_inputrc] {    set env(INPUTRC) $old_inputrc} else {    unset env(INPUTRC)}set timeout $oldtimeout1return 0

⌨️ 快捷键说明

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