From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26538 invoked by alias); 19 Nov 2014 05:46:03 -0000 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 Received: (qmail 26525 invoked by uid 89); 19 Nov 2014 05:46:02 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: Yes, score=6.5 required=5.0 tests=AWL,BAYES_50,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,FROM_EXCESS_BASE64,MIME_BASE64_BLANKS,RCVD_IN_JMF_BL,RDNS_DYNAMIC,SPF_PASS autolearn=no version=3.3.2 X-HELO: smtpbgie1.qq.com Received: from ec2-54-194-6-37.eu-west-1.compute.amazonaws.com (HELO smtpbgie1.qq.com) (54.194.6.37) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Wed, 19 Nov 2014 05:45:52 +0000 X-QQ-FEAT: 1E0q76u0MZ8qnQpk+HEdLsd/3o65Kn/y4Vw/iqaNh57eQYNX45BsAXNYYwNGe h7KeoDEy1PBWe7u2vX9aE+kyRhUnm+WycnvvcuXYFtru1vtTJVmorojY30is9sEtxrAlCOF HbNZml+urPsn2+SU6TlyXI0+jCZkNEJVh+Q/mTRUvSuI0XdMLWtTmGQDBODuBAwElm3A9Rw = X-QQ-SSF: 0000000000000090000000000000000 X-HAS-ATTACH: no X-QQ-BUSINESS-ORIGIN: 2 X-QQ-STYLE: X-QQ-mid: webmail54t1416375942t6949501 From: "=?ISO-8859-1?B?TmFuIFhpYW8=?=" To: "=?ISO-8859-1?B?Z2Ri?=" Subject: How to use "frame addr" command in gdb? Mime-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: base64 Date: Wed, 19 Nov 2014 05:46:00 -0000 Message-ID: X-QQ-MIME: TCMime 1.0 by Tencent X-QQ-Mailer: QQMail 2.x X-QQ-SENDSIZE: 520 X-QQ-Bgrelay: 1 X-IsSubscribed: yes X-SW-Source: 2014-11/txt/msg00025.txt.bz2 SGkgYWxsLAoKSSBrbm93IHRoZXJlIGFyZSAyIGNvbW1hbmRzIGZvciBzZWxl Y3RpbmcgZnJhbWU6ICJmcmFtZSBuIiBhbmQgImZyYW1lIGFkZHIiKFNlbGVj dGluZyBhIEZyYW1lIGluIGdkYiBtYW51YWwpLiBBbmQgd3JpdGUgYSBzaW1w bGUgcHJvZ3JhbSB0byB0ZXN0IHRoZSAyIGNvbW1hbmRzLgoKVGhlIHByb2dy YW0gaXMgbGlrZSB0aGlzOgoKI2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgZnVu YzEoaW50IGEpCnsKICAgICAgICByZXR1cm4gMiAqIGE7Cn0KCmludCBmdW5j MihpbnQgYSkKewogICAgICAgIGludCBjID0gMDsKICAgICAgICBjID0gMiAq IGZ1bmMxKGEpOwogICAgICAgIHJldHVybiBjOwp9CgppbnQgZnVuYzMoaW50 IGEpCnsKICAgICAgICBpbnQgYyA9IDA7CiAgICAgICAgYyA9IDIgKiBmdW5j MihhKTsKICAgICAgICByZXR1cm4gYzsKfQoKaW50IG1haW4odm9pZCkKewog ICAgICAgIHByaW50ZigiJWRcbiIsIGZ1bmMzKDEwKSk7CiAgICAgICAgcmV0 dXJuIDA7Cn0KCkkgdXNlIGdkYiB0byBkZWJ1ZyB0aGlzIHByb2dyYW0sIGFu ZCBmaW5kICdmcmFtZSBuJyBjb21tYW5kIHdvcmtzIE9LOgooZ2RiKSBidAoj MCAgZnVuYzEgKGE9MTApIGF0IGEuYzo1CiMxICAweDA4MDUwYjY3IGluIGZ1 bmMyIChhPTEwKSBhdCBhLmM6MTEKIzIgIDB4MDgwNTBiODkgaW4gZnVuYzMg KGE9MTApIGF0IGEuYzoxOAojMyAgMHgwODA1MGJiOSBpbiBtYWluICgpIGF0 IGEuYzoyNAooZ2RiKSBmcmFtZSAyCiMyICAweDA4MDUwYjg5IGluIGZ1bmMz IChhPTEwKSBhdCBhLmM6MTgKCkJ1dCB3aGVuIEkgd2FudCB0byB1c2UgImZy YW1lIGFkZHIiIGNvbW1hbmQsIGl0IHNlZW1zIG5vdCB3b3JrIHdlbGw6Cgoo Z2RiKSBmcmFtZSAweDA4MDUwYmI5CiMwICAweDAwMDAwMDAwIGluID8/ICgp CihnZGIpIGZyYW1lIDB4MDgwNTBiODkKIzAgIDB4MDAwMDAwMDAgaW4gPz8g KCkKKGdkYikgZnJhbWUgMHgwODA1MGI5MgojMCAgMHgwMDAwMDAwMCBpbiA/ PyAoKQoKSG93IHRvIHVzZSAiZnJhbWUgYWRkciIgY29tbWFuZD8gVGhhbmtz IHZlcnkgbXVjaCBpbiBhZHZhbmNlISBJIGNhbid0IGZpbmQgb3RoZXIgcmVm ZXJlbmNlIGV4Y2VwdCB0aGUgbWFudWFsLgoKUC5TLiBNeSBnZGIgaXMgNy44 LjEsIGFuZCB3b3JrcyBvbiBTb2xhcmlzIFg4NiBwbGF0Zm9ybS4KCkJlc3Qg UmVnYXJkcwpOYW4gWGlhbw== >From gdb-return-43916-listarch-gdb=sources.redhat.com@sourceware.org Wed Nov 19 06:49:53 2014 Return-Path: Delivered-To: listarch-gdb@sources.redhat.com Received: (qmail 16561 invoked by alias); 19 Nov 2014 06:49:53 -0000 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 Delivered-To: mailing list gdb@sourceware.org Received: (qmail 16550 invoked by uid 89); 19 Nov 2014 06:49:52 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_05,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.2 X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 19 Nov 2014 06:49:51 +0000 Received: from svr-orw-fem-06.mgc.mentorg.com ([147.34.97.120]) by relay1.mentorg.com with esmtp id 1Xqz5F-0002Uu-KV from Yao_Qi@mentor.com ; Tue, 18 Nov 2014 22:49:45 -0800 Received: from GreenOnly (147.34.91.1) by SVR-ORW-FEM-06.mgc.mentorg.com (147.34.97.120) with Microsoft SMTP Server id 14.3.181.6; Tue, 18 Nov 2014 22:49:44 -0800 From: Yao Qi To: Nan Xiao CC: gdb Subject: Re: How to use "frame addr" command in gdb? References: Date: Wed, 19 Nov 2014 06:49:00 -0000 In-Reply-To: (Nan Xiao's message of "Wed, 19 Nov 2014 13:45:41 +0800") Message-ID: <874mtvhegh.fsf@codesourcery.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes X-SW-Source: 2014-11/txt/msg00026.txt.bz2 Content-length: 2036 Nan Xiao writes: > I use gdb to debug this program, and find 'frame n' command works OK: > (gdb) bt > #0 func1 (a=3D10) at a.c:5 > #1 0x08050b67 in func2 (a=3D10) at a.c:11 > #2 0x08050b89 in func3 (a=3D10) at a.c:18 > #3 0x08050bb9 in main () at a.c:24 > (gdb) frame 2 > #2 0x08050b89 in func3 (a=3D10) at a.c:18 > > But when I want to use "frame addr" command, it seems not work well: > > (gdb) frame 0x08050bb9 > #0 0x00000000 in ?? () > (gdb) frame 0x08050b89 > #0 0x00000000 in ?? () > (gdb) frame 0x08050b92 > #0 0x00000000 in ?? () > > How to use "frame addr" command? Thanks very much in advance! I can't > find other reference except the manual. You pass the wrong address to command "frame". The addresses in the output of "bt" command are the pc values in each frame. They are not the address of frames. (gdb) help frame Select and print a stack frame. With no argument, print the selected stack frame. (See also "info frame"). An argument specifies the frame to select. It can be a stack frame number or the address of the frame. ^^^^^^^^^^^^^^^^^^^^^^^^ With argument, nothing is printed if input is coming from a command file or a user-defined command. We should pass "the address of the frame" to command "frame", and it can be got from command "info frame". (gdb) bt #0 func1 (a=3D10) at 2.c:6 #1 0x08048452 in func2 (a=3D10) at 2.c:12 #2 0x08048474 in func3 (a=3D10) at 2.c:19 #3 0x08048493 in main () at 2.c:25 (gdb) info frame 2 Stack frame at 0xbfffee70: ^^^^^^^^^^ the address of the frame eip =3D 0x8048474 in func3 (2.c:19); saved eip =3D 0x8048493 called by frame at 0xbfffee90, caller of frame at 0xbfffee54 source language c. Arglist at 0xbfffee68, args: a=3D10 Locals at 0xbfffee68, Previous frame's sp is 0xbfffee70 Saved registers: ebp at 0xbfffee68, eip at 0xbfffee6c (gdb) frame 0xbfffee70 #2 0x08048474 in func3 (a=3D10) at 2.c:19 19 c =3D 2 * func2(a); --=20 Yao (=E9=BD=90=E5=B0=A7)