Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Joel Brobecker <brobecker@adacore.com>
To: Carlos Eduardo Seo <cseo@linux.vnet.ibm.com>
Cc: gdb@sourceware.org
Subject: Re: Problems while debugging fortran
Date: Wed, 26 Sep 2007 06:29:00 -0000	[thread overview]
Message-ID: <20070925173418.GA23641@adacore.com> (raw)
In-Reply-To: <46F9439A.3010806@linux.vnet.ibm.com>

> If I change the name of my Fortran program to "main", I can set a
> breakpoint by line number inside it. So it seems that GDB is only
> looking for "main". This is fine for C, [...]

Exactly.

> [..] but it won't work for Fortran IMHO, not even using that patch
> Daniel posted. So, I believe we should address this issue in
> symtab.c:find_main_name. I can start looking into it.

That's what I was trying to say.

To give you a bit more context, let me give you a few more datapoints.
This is as much as I will be able to help you, because I do not know
Fortran at all.

First of all, I think the term "main" is a bit overloaded in our discussion.
There is what we usually call the "main program", which is the routine
that gets called to start our program. And then there is the function
whose name is "main". In languages such as C, the "main program" will
always be called "main". But on the other hand, in Ada, the main program
can be called anything.

Let's develop a bit more the Ada case. Consider the following simplistic
program that does pretty much nothing:

        procedure Foo is
        begin
           null;
        end Foo;

We can make this procedure our "main program". To do that, we build
the program using the following command:

        % gnatmake -g foo

(gnatmake is the equivalent of "make" except that it computes the
dependencies automatically)

Now, how does the debugger find out that, in this case, the main
routine name is procedure "Foo"? It knows that the Ada compiler
in GCC generates a symbol whose name is well known, that points
to a string containing the full name of our main routine. Check
out ada-lang.c:ada_main_name(). So if we find our symbol, then
we know the main procedure is in Ada, and what its name is.

I am hoping that the Fortran compiler does something similar,
that it leaves a mark of some kind that will allow you to determine
what the main routine name is.

> In the scenario above, a breakpoint by line number inside a function
> will fail. I think this may has to do with the compiler generating two
> DWARF compilation units (one for "main" and other for the function)
> and GDB is not reading the one related to the function. What are your
> thoughts about this?

I'm hoping that the description above makes it clearer for you what
needs to be done. I am a bit lost in your particular example, simply
because I don't know what the Fortran compiler actually does...

-- 
Joel


  reply	other threads:[~2007-09-25 17:34 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-15 11:37 Carlos Eduardo Seo
2007-09-20 19:47 ` Joel Brobecker
2007-09-20 20:46   ` Carlos Eduardo Seo
2007-09-20 20:56     ` Joel Brobecker
2007-09-21  6:52       ` Daniel Jacobowitz
2007-09-26 21:46         ` Carlos Eduardo Seo
2007-09-26 21:51           ` Joel Brobecker
2007-10-24 16:20             ` Carlos Eduardo Seo
2007-10-24 19:33               ` Joel Brobecker
2007-10-24 19:57                 ` Daniel Jacobowitz
2007-10-24 20:16                   ` Carlos Eduardo Seo
2007-10-24 21:56                     ` Carlos Eduardo Seo
2007-09-26 21:51           ` Pierre Muller
2007-09-23  2:52       ` Carlos Eduardo Seo
2007-09-24 10:01         ` Joel Brobecker
2007-09-24 23:49           ` Carlos Eduardo Seo
2007-09-25  1:29             ` Joel Brobecker
2007-09-25 17:34               ` Carlos Eduardo Seo
2007-09-26  6:29                 ` Joel Brobecker [this message]
2007-10-25 16:07 François-Xavier Coudert
2007-10-25 17:06 ` Daniel Jacobowitz
2007-10-25 18:44   ` Jim Blandy
2007-10-25 19:01     ` Daniel Jacobowitz
2007-10-25 19:27       ` Jim Blandy
2007-10-25 20:24         ` Joel Brobecker
2007-10-25 20:36           ` Carlos Eduardo Seo
2007-10-25 20:41             ` Joel Brobecker
2007-10-25 20:55             ` Andreas Schwab

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070925173418.GA23641@adacore.com \
    --to=brobecker@adacore.com \
    --cc=cseo@linux.vnet.ibm.com \
    --cc=gdb@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox