From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14912 invoked by alias); 21 May 2007 22:24:22 -0000 Received: (qmail 14904 invoked by uid 22791); 21 May 2007 22:24:21 -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; Mon, 21 May 2007 22:24:12 +0000 Received: from localhost ([127.0.0.1]) by mailapp.tensilica.com with esmtp (Exim 4.34) id 1HqGIO-0007Ay-Vj; Mon, 21 May 2007 15:24:05 -0700 Received: from mailapp.tensilica.com ([127.0.0.1]) by localhost (mailapp [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 24288-06; Mon, 21 May 2007 15:24:04 -0700 (PDT) Received: from maxim_fc5.hq.tensilica.com ([192.168.11.68]) by mailapp.tensilica.com with esmtp (Exim 4.34) id 1HqGIO-0007As-I4; Mon, 21 May 2007 15:24:04 -0700 Message-ID: <46521C04.7040405@hq.tensilica.com> Date: Mon, 21 May 2007 22:24:00 -0000 From: Maxim Grigoriev User-Agent: Thunderbird 1.5.0.9 (X11/20070102) MIME-Version: 1.0 To: gdb@sourceware.org, Marc Gauthier , Pete MacLiesh , Ross Morley Subject: Understanding GDB frames Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit 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/msg00097.txt.bz2 I experience some difficulties in finding a precise definition of gdb frames. Any help on choosing the right answer among the list provided by me at the end of this message will be highly appreciated. QUESTION ======== The program (frame.c) is #include int frame_number = 1; int f11(int b) { int a; printf("f11() frame number %d\n", frame_number++); a = b + 1; b--; if (b != 0) { printf("f11() will be called recursively\n"); f11(b); } return a; /* <-- BP set here. */ } int f1(int a) { return f11(a); } int main() { int a = 1; int i; for (i = 0; i <2; i++) a = f11(a); a = f11(1); a = f1(1); return 0; } The gdb command file "CMD": break frame.c:18 run continue continue continue continue kill quit was used to run a gdb session like this : gdb --command=CMD Let's define that "frames A and B are the same" if frame_id_eq ( A->this_id, B->this_id ) == true The breakpoit has been set at line 18 and hit 5 times. Execution control has been subsequently taken by gdb in five frames numbered 1, 2, 3, 4, and 5. According to the definition of GDB frames, which statement is correct ? ANSWERS ======= 1) All frames 1, 2, 3, 4, and 5 are the same; 2) All frames 1, 2, 3, 4, and 5 are different from each other; 3) Frames 1,2, and 4 are the same. Frames 3 and 5 are different from 1, 2, 4 and from each other; 4) It's implementation-dependent. While doing architecture ports, people decide how to implement frame_id-related functions to compare frames; 5) Other ( explanation would be appreciated ). -- Maxim