From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31399 invoked by alias); 2 May 2004 13:04:01 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 31385 invoked from network); 2 May 2004 13:04:00 -0000 Received: from unknown (HELO lakermmtao09.cox.net) (68.230.240.30) by sources.redhat.com with SMTP; 2 May 2004 13:04:00 -0000 Received: from white ([68.9.64.121]) by lakermmtao09.cox.net (InterMail vM.6.01.03.02 201-2131-111-104-20040324) with ESMTP id <20040502130359.ZVVY5659.lakermmtao09.cox.net@white>; Sun, 2 May 2004 09:03:59 -0400 Received: from bob by white with local (Exim 3.35 #1 (Debian)) id 1BKGdR-0000OD-00; Sun, 02 May 2004 09:03:57 -0400 Date: Sun, 02 May 2004 13:04:00 -0000 From: Bob Rossi To: Christopher Nebergall Cc: gdb@sources.redhat.com Subject: Re: Non-interactive stepping Message-ID: <20040502130357.GA1487@white> Mail-Followup-To: Christopher Nebergall , gdb@sources.redhat.com References: <000101c42fc4$0f9d0260$6401a8c0@raven> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <000101c42fc4$0f9d0260$6401a8c0@raven> User-Agent: Mutt/1.3.28i X-SW-Source: 2004-05/txt/msg00008.txt.bz2 On Sat, May 01, 2004 at 03:34:19PM -0600, Christopher Nebergall wrote: > Is it possible to use GDB (or another app) to print out the executing source > code file name, line number, function name etc, for an application (compiled > with -g) in a non-interactive manner (print the output to stdout)? I used a > similar type of debugging in basica years ago and miss having something > similar in modern debuggers. > > I want to do something similar to > > gdb -[Some command line argument] a.out > a.out: main.c:5 main() May 1 16:18:07 CDT 2004 > a.out: main.c:6 main() May 1 16:18:08 CDT 2004 > a.out: main.c:7 main() May 1 16:18:09 CDT 2004 > a.out: main.c:25 print() May 1 16:18:09 CDT 2004 > a.out: main.c:28 print() May 1 16:18:09 CDT 2004 > a.out: source2.c:10 echo() May 1 16:18:10 CDT 2004 > a.out: source2.c:11 echo() May 1 16:18:10 CDT 2004 > a.out: source2.c:11 echo() May 1 16:18:12 CDT 2004 > a.out: main.c:29 print() May 1 16:18:13 CDT 2004 > a.out: main.c:8 main() May 1 16:18:14 CDT 2004 > etc... > > The main reason I want this is to record program flow during real execution > of the program without having to step through it line by line in the > debugger. If there is a segfault, it's pretty easy to determine the program > flow which caused it. It would also be useful to discover how a large > program works, and what operations in a program's GUI or command line touch > which lines of source code. It could also be used for very crude profiling. I don't think you should be using a debugger to do this. Have you considered a code coverage tool? I think gcov might do what you want. Bob Rossi