From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13311 invoked by alias); 19 May 2007 01:01:13 -0000 Received: (qmail 13296 invoked by uid 22791); 19 May 2007 01:01:10 -0000 X-Spam-Check-By: sourceware.org Received: from hq.tensilica.com (HELO mailapp.tensilica.com) (65.205.227.29) by sourceware.org (qpsmtpd/0.31) with ESMTP; Sat, 19 May 2007 01:01:05 +0000 Received: from localhost ([127.0.0.1]) by mailapp.tensilica.com with esmtp (Exim 4.34) id 1HpDJe-0005Uw-Jo; Fri, 18 May 2007 18:01:02 -0700 Received: from mailapp.tensilica.com ([127.0.0.1]) by localhost (mailapp [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19772-07; Fri, 18 May 2007 18:01:02 -0700 (PDT) Received: from maxim_fc5.hq.tensilica.com ([192.168.11.68]) by mailapp.tensilica.com with esmtp (Exim 4.34) id 1HpDJd-0005Rg-GU; Fri, 18 May 2007 18:01:01 -0700 Message-ID: <464E4C4D.9010709@hq.tensilica.com> Date: Sat, 19 May 2007 01:01:00 -0000 From: Maxim Grigoriev User-Agent: Thunderbird 1.5.0.9 (X11/20070102) MIME-Version: 1.0 To: gdb@sourceware.org, Pete MacLiesh , Vinay Pandit , Shaiju P , Marc Gauthier , Maxim Grigoriev Subject: Which MI behavior is correct ? Content-Type: multipart/mixed; boundary="------------020309020504020401080107" X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2007-05/txt/msg00081.txt.bz2 This is a multi-part message in MIME format. --------------020309020504020401080107 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-length: 1499 Hello GDB experts, I wonder if somebody can help me to understand which GDB MI behavior is supposed to be correct. I've included the test case, the MI commands used, and the outputs from two debuggers: the native FC5 Linux-X86 GNU gdb Red Hat Linux (6.3.0.0-1.134.fc5rh) and ours GNU gdb 6.5 Xtensa Tools 7.1.0-development Our GNU gdb 6.5 is consistent with the top of the FSF tree. PROBLEM DESCRIPTION: ==================== When we hit the breakpoint inside f11() second time: In case of 6.3 we have : 228^done,changelist=[{name="var3",in_scope="true",type_changed="false"}] (gdb) 229^done,changelist=[{name="var4",in_scope="true",type_changed="false"}] (gdb) 230^done,value="3" (gdb) 231^done,value="2" (gdb) In in case of 6.5+ we have : 228^done,changelist=[{name="var3",in_scope="false"}] (gdb) 229^done,changelist=[{name="var4",in_scope="false"}] (gdb) 230^done,value="2" (gdb) 231^done,value="1" (gdb) So "var3" and "var4" are out of scope. Our GUI front-end relies on the 6.3-like behavior, which is consistent with what we had in our previous releases based on GNU gdb 5.2.1. QUESTIONS ========= 1) Is 6.5(+)-style behavior incorrect ? If it is correct: - Are we supposed to recreate variables each time we enter the function ? - Is this efficient ? 2) Where can I find a good documentation describing these aspects of GDB MI ? All docs I found on the Internet weren't quite helpful. Thanks in advance for any of your help. -- Maxim --------------020309020504020401080107 Content-Type: text/plain; name="CMD" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="CMD" Content-length: 950 100-gdb-set confirm off 101-gdb-set width 0 102-gdb-set height 0 103-interpreter-exec console echo 104-gdb-show prompt file exe 200-break-insert create_var.cxx:14 201-break-insert create_var.cxx:7 202-data-list-register-names 203-stack-info-depth 204-break-insert -t main run 206-stack-info-depth 207-stack-list-frames 0 1 208-data-list-changed-registers 209-stack-list-arguments 0 0 0 210-stack-list-locals 0 211-var-create - * a 212-var-create - * b 213-var-evaluate-expression var2 214-var-evaluate-expression var1 215-exec-continue 216-stack-info-depth 217-stack-list-frames 0 2 218-data-list-changed-registers 219-stack-list-arguments 0 0 0 220-stack-list-locals 0 221-var-create - * b 222-var-create - * a 223-var-evaluate-expression var4 224-var-evaluate-expression var3 225-exec-continue 226-stack-info-depth 227-stack-list-frames 0 2 228-var-update var3 229-var-update var4 230-var-evaluate-expression var4 231-var-evaluate-expression var3 --------------020309020504020401080107 Content-Type: text/x-log; name="NATIVE.log" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="NATIVE.log" Content-length: 3054 (gdb) 100^done (gdb) 101^done (gdb) 102^done (gdb) 103^done (gdb) 104^done,value="(gdb) " (gdb) &"file exe\n" ~"Using host libthread_db library \"/lib/libthread_db.so.1\".\n" ^done (gdb) 200^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x0804845f",func="f1(int)",file="create_var.cxx",line="14",times="0"} (gdb) 201^done,bkpt={number="2",type="breakpoint",disp="keep",enabled="y",addr="0x08048443",func="f11(int)",file="create_var.cxx",line="7",times="0"} (gdb) 202^done,register-names=["eax","ecx","edx","ebx","esp","ebp","esi","edi","eip","eflags","cs","ss","ds","es","fs","gs","st0","st1","st2","st3","st4","st5","st6","st7","fctrl","fstat","ftag","fiseg","fioff","foseg","fooff","fop","xmm0","xmm1","xmm2","xmm3","xmm4","xmm5","xmm6","xmm7","mxcsr","orig_eax","mm0","mm1","mm2","mm3","mm4","mm5","mm6","mm7"] (gdb) &"mi_cmd_stack_info_depth: No stack.\n" 203^error,msg="mi_cmd_stack_info_depth: No stack." (gdb) 204^done,bkpt={number="3",type="breakpoint",disp="del",enabled="y",addr="0x08048464",func="main",file="create_var.cxx",line="17",times="0"} (gdb) &"run\n" ^done,thread-id="0",frame={addr="0x08048464",func="main",args=[],file="create_var.cxx",line="17"} (gdb) 206^done,depth="1" (gdb) 207^done,stack=[frame={level="0",addr="0x08048464",func="main",file="create_var.cxx",line="17"}] (gdb) 208^done,changed-registers=["0","1","2","3","4","5","6","8","9","10","11","12","13","15","24","26","40","41"] (gdb) 209^done,stack-args=[frame={level="0",args=[]}] (gdb) 210^done,locals=[name="a",name="b"] (gdb) 211^done,name="var1",numchild="0",type="int" (gdb) 212^done,name="var2",numchild="0",type="int" (gdb) 213^done,value="11553984" (gdb) 214^done,value="12808180" (gdb) 215^running (gdb) 215*stopped,reason="breakpoint-hit",bkptno="2",thread-id="0",frame={addr="0x08048443",func="f11",args=[{name="b",value="1"}],file="create_var.cxx",line="7"} (gdb) 216^done,depth="2" (gdb) 217^done,stack=[frame={level="0",addr="0x08048443",func="f11",file="create_var.cxx",line="7"},frame={level="1",addr="0x08048487",func="main",file="create_var.cxx",line="22"}] (gdb) 218^done,changed-registers=["0","1","4","5","8","9"] (gdb) 219^done,stack-args=[frame={level="0",args=[name="b"]}] (gdb) 220^done,locals=[name="a"] (gdb) 221^done,name="var3",numchild="0",type="int" (gdb) 222^done,name="var4",numchild="0",type="int" (gdb) 223^done,value="2" (gdb) 224^done,value="1" (gdb) 225^running (gdb) 225*stopped,reason="breakpoint-hit",bkptno="2",thread-id="0",frame={addr="0x08048443",func="f11",args=[{name="b",value="2"}],file="create_var.cxx",line="7"} (gdb) 226^done,depth="2" (gdb) 227^done,stack=[frame={level="0",addr="0x08048443",func="f11",file="create_var.cxx",line="7"},frame={level="1",addr="0x08048495",func="main",file="create_var.cxx",line="23"}] (gdb) 228^done,changelist=[{name="var3",in_scope="true",type_changed="false"}] (gdb) 229^done,changelist=[{name="var4",in_scope="true",type_changed="false"}] (gdb) 230^done,value="3" (gdb) 231^done,value="2" (gdb) &"\n" ^done (gdb) --------------020309020504020401080107 Content-Type: text/x-log; name="XTENSA.log" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline; filename="XTENSA.log" Content-length: 4980 (gdb)=20 100^done (gdb)=20 101^done (gdb)=20 102^done (gdb)=20 103^done (gdb)=20 104^done,value=3D"(xt-gdb) " (gdb)=20 &"file exe\n" ^done (gdb)=20 200^done,bkpt=3D{number=3D"1",type=3D"breakpoint",disp=3D"keep",enabled=3D"= y",addr=3D"0x40000978",func=3D"f1(int)",file=3D"create_var.cxx",fullname=3D= "/home/maxim/W/BUGS/PMAC_MI/create_var.cxx",line=3D"14",times=3D"0"} (gdb)=20 201^done,bkpt=3D{number=3D"2",type=3D"breakpoint",disp=3D"keep",enabled=3D"= y",addr=3D"0x40000991",func=3D"f11(int)",file=3D"create_var.cxx",fullname= =3D"/home/maxim/W/BUGS/PMAC_MI/create_var.cxx",line=3D"7",times=3D"0"} (gdb)=20 202^done,register-names=3D["br","ar0","ar1","ar2","ar3","ar4","ar5","ar6","= ar7","ar8","ar9","ar10","ar11","ar12","ar13","ar14","ar15","ar16","ar17","a= r18","ar19","ar20","ar21","ar22","ar23","ar24","ar25","ar26","ar27","ar28",= "ar29","ar30","ar31","ar32","ar33","ar34","ar35","ar36","ar37","ar38","ar39= ","ar40","ar41","ar42","ar43","ar44","ar45","ar46","ar47","ar48","ar49","ar= 50","ar51","ar52","ar53","ar54","ar55","ar56","ar57","ar58","ar59","ar60","= ar61","ar62","ar63","m0","m1","m2","m3","lbeg","lend","lcount","acclo","acc= hi","mmid","ddr","interrupt","intset","intclear","ccount","icount","ccompar= e0","ccompare1","epc1","epc2","epc3","excsave1","excsave2","excsave3","eps2= ","eps3","exccause","depc","excvaddr","windowbase","windowstart","sar","lit= base","ps","intenable","dbreaka0","dbreakc0","dbreaka1","dbreakc1","ibreaka= 0","ibreaka1","ibreakenable","icountlevel","debugcause","cpenable","pc","a0= ","a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","a11","a12","a13","a14= ","a15","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","b11","b12"= ,"b13","b14","b15","psintlevel","psum","pswoe","psexcm","pscallinc","psowb"= ,"litbaddr","litben","acc","dbnum","fp"] (gdb)=20 &"No registers.\n" 203^error,msg=3D"No registers." (gdb)=20 204^done,bkpt=3D{number=3D"3",type=3D"breakpoint",disp=3D"del",enabled=3D"y= ",addr=3D"0x40000937",func=3D"main",file=3D"create_var.cxx",fullname=3D"/ho= me/maxim/W/BUGS/PMAC_MI/create_var.cxx",line=3D"19",times=3D"0"} (gdb)=20 &"run\n" ~"Starting the ISS simulator.\n" ~"Switching to remote protocol\n" ~"Remote debugging using localhost:56386\n" ~"main () at create_var.cxx:19\n" ~"19\t\tint a=3D1;\n" ^done (gdb)=20 206^done,depth=3D"1" (gdb)=20 207^done,stack=3D[frame=3D{level=3D"0",addr=3D"0x40000937",func=3D"main",fi= le=3D"create_var.cxx",fullname=3D"/home/maxim/W/BUGS/PMAC_MI/create_var.cxx= ",line=3D"19"}] (gdb)=20 208^done,changed-registers=3D["2","3","5","6","7","8","9","10","11","13","1= 4","17","21","22","23","24","79","87","94","95","98","109","110","111","112= ","113","114","115","116","117","119","120","123","144","145","147","153"] (gdb)=20 209^done,stack-args=3D[frame=3D{level=3D"0",args=3D[]}] (gdb)=20 210^done,locals=3D[name=3D"a",name=3D"b"] (gdb)=20 211^done,name=3D"var1",numchild=3D"0",type=3D"int" (gdb)=20 212^done,name=3D"var2",numchild=3D"0",type=3D"int" (gdb)=20 213^done,value=3D"0" (gdb)=20 214^done,value=3D"0" (gdb)=20 215^running (gdb)=20 215*stopped,reason=3D"breakpoint-hit",bkptno=3D"2",thread-id=3D"0",frame=3D= {addr=3D"0x40000991",func=3D"f11",args=3D[{name=3D"b",value=3D"1"}],file=3D= "create_var.cxx",fullname=3D"/home/maxim/W/BUGS/PMAC_MI/create_var.cxx",lin= e=3D"7"} (gdb)=20 216^done,depth=3D"2" (gdb)=20 217^done,stack=3D[frame=3D{level=3D"0",addr=3D"0x40000991",func=3D"f11",fil= e=3D"create_var.cxx",fullname=3D"/home/maxim/W/BUGS/PMAC_MI/create_var.cxx"= ,line=3D"7"},frame=3D{level=3D"1",addr=3D"0x40000940",func=3D"main",file=3D= "create_var.cxx",fullname=3D"/home/maxim/W/BUGS/PMAC_MI/create_var.cxx",lin= e=3D"22"}] (gdb)=20 218^done,changed-registers=3D["13","14","15","16","17","79","94","95","98",= "110","111","112","114","115","116","117","119","120","121","122","123","14= 7","153"] (gdb)=20 219^done,stack-args=3D[frame=3D{level=3D"0",args=3D[name=3D"b"]}] (gdb)=20 220^done,locals=3D[name=3D"a"] (gdb)=20 221^done,name=3D"var3",numchild=3D"0",type=3D"int" (gdb)=20 222^done,name=3D"var4",numchild=3D"0",type=3D"int" (gdb)=20 223^done,value=3D"2" (gdb)=20 224^done,value=3D"1" (gdb)=20 225^running (gdb)=20 225*stopped,reason=3D"breakpoint-hit",bkptno=3D"2",thread-id=3D"0",frame=3D= {addr=3D"0x40000991",func=3D"f11",args=3D[{name=3D"b",value=3D"2"}],file=3D= "create_var.cxx",fullname=3D"/home/maxim/W/BUGS/PMAC_MI/create_var.cxx",lin= e=3D"7"} (gdb)=20 226^done,depth=3D"2" (gdb)=20 227^done,stack=3D[frame=3D{level=3D"0",addr=3D"0x40000991",func=3D"f11",fil= e=3D"create_var.cxx",fullname=3D"/home/maxim/W/BUGS/PMAC_MI/create_var.cxx"= ,line=3D"7"},frame=3D{level=3D"1",addr=3D"0x40000947",func=3D"main",file=3D= "create_var.cxx",fullname=3D"/home/maxim/W/BUGS/PMAC_MI/create_var.cxx",lin= e=3D"23"}] (gdb)=20 228^done,changelist=3D[{name=3D"var3",in_scope=3D"false"}] (gdb)=20 229^done,changelist=3D[{name=3D"var4",in_scope=3D"false"}] (gdb)=20 230^done,value=3D"2" (gdb)=20 231^done,value=3D"1" (gdb)=20 &"\n" ^done (gdb)=20 --------------020309020504020401080107--