From: Niklas Holsti <niklas.holsti@tidorum.invalid>
Subject: Re: Intervention needed?
Date: Wed, 3 Apr 2019 20:23:36 +0300
Date: 2019-04-03T20:23:36+03:00 [thread overview]
Message-ID: <ggk8gpFasspU1@mid.individual.net> (raw)
In-Reply-To: <q80met$bfn$2@franka.jacob-sparre.dk>
On 19-04-03 01:07 , Randy Brukardt wrote:
> Does anyone spend much time in a debugger when writing Ada?
I don't. I can't remember when I last used gdb or any other debugger,
and in my ~30 years of Ada use I estimate that I have used a debugger on
perhaps ten occasions. I have slightly more often used "monitor"
programs to examine and alter memory and register contents when
analysing problems in embedded programs, and those monitor programs can
perhaps be considered crude debuggers. However, these cases involved the
effects and meanings of HW control registers rather than ordinary
program variables.
A propos, the name "debugger" is IMO one of the unfortunate historical
misnomers in the programming domain. It is a misnomer because a
"debugger" like gdb should certainly not be our main tool for removing
bugs from programs. Diving into the debugger as the first step of
analysing a program failure is akin to starting a new project by diving
into coding and skipping the design phase. Moreover, the activity of
removing a bug from program, which should be the meaning of the term
"debugging", should certainly not consist just of a gdb/debugger session.
On the few occasions when I have used gdb or other debuggers, they have
usually failed to help me understand the problem. The "interactive
debugging" sessions have usually been frustrating. It is simply very
hard to examine, understand and control the large, dynamic, complex
beast that is the state of a program in execution, through the
debugger's often imperfect understanding of the mapping between the
source-level program and the machine state. Moreover, my programs are
often real-time and multi-task and running gdb on such programs usually
results in a quick malfunction because gdb is not in control of physical
time.
I find, like Dmitry, that tracing and logging functions, either built
into the program and optionally activated, or inserted ad hoc to
understand a specific bug, are more useful. Even if the problem is not
found in the first attempt, but needs incremental addition or activation
of more or other logs and traces, the process is much less frustrating
than an interactive gdb session because there is much more control, much
less noise due to irrelevant outputs from the program and the debugger,
and no confusion between source level and machine level.
However, I have not had access to any debugger with proper
reverse-execution functions -- that is, a debugger that could show me
not only what the program is doing "now", and what the variable values
are "now", at the present breakpoint, but also what it was doing and
what values the variables had in the recent or more distant past. If I
had a debugger that could let me inspect the state of the program at any
point in its execution, freely scanning and searching backwards as well
as forwards in execution time, I might be tempted to try that debugger.
(Another important programming misnomer is "comments", which should
certainly not be random off-the-cuff commentary, but should be logical
and well thought-out rationale, motivation, description, analysis, etc.
But I digress.)
--
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
. @ .
next prev parent reply other threads:[~2019-04-03 17:23 UTC|newest]
Thread overview: 146+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-02 22:07 Intervention needed? Randy Brukardt
2019-04-03 7:29 ` Dmitry A. Kazakov
2019-04-03 14:31 ` Optikos
2019-04-03 14:54 ` Dmitry A. Kazakov
2019-04-03 15:29 ` Optikos
2019-04-03 16:16 ` Simon Wright
2019-04-03 17:15 ` Dmitry A. Kazakov
2019-04-03 21:12 ` Simon Wright
2019-04-04 7:09 ` Dmitry A. Kazakov
2019-04-04 5:44 ` Maciej Sobczak
2019-04-04 7:17 ` Dmitry A. Kazakov
2019-04-04 7:22 ` Paul Rubin
2019-04-04 8:37 ` Niklas Holsti
2019-04-05 0:13 ` Randy Brukardt
2019-04-05 5:45 ` Maciej Sobczak
2019-04-05 15:17 ` Optikos
2019-04-06 1:38 ` Jere
2019-04-06 4:25 ` alby.gamper
2019-04-06 6:49 ` Jere
2019-04-06 8:24 ` alby.gamper
2019-04-04 12:28 ` Simon Wright
2019-04-04 16:17 ` Optikos
2019-04-03 15:07 ` Lucretia
2019-04-03 16:15 ` Simon Wright
2019-04-03 17:23 ` Niklas Holsti [this message]
2019-04-03 17:48 ` Bill Findlay
2019-04-03 21:01 ` Simon Wright
2019-04-03 18:58 ` Dennis Lee Bieber
-- strict thread matches above, loose matches on Subject: below --
2019-03-25 19:14 Randy Brukardt
2019-03-25 20:44 ` Dmitry A. Kazakov
2019-03-28 0:48 ` Jere
2019-03-08 16:43 Olivier Henley
2019-03-08 16:58 ` Dmitry A. Kazakov
2019-03-08 17:31 ` gautier_niouzes
2019-03-11 14:31 ` antispam
2019-03-11 15:07 ` gautier_niouzes
2019-03-11 17:19 ` Dmitry A. Kazakov
2019-03-11 15:34 ` Lucretia
2019-03-11 17:30 ` Simon Wright
2019-03-11 17:42 ` Dmitry A. Kazakov
2019-03-11 18:14 ` AdaMagica
2019-03-11 19:52 ` Olivier Henley
2019-03-11 20:04 ` Lucretia
2019-03-11 22:08 ` Jeffrey R. Carter
2019-03-12 2:04 ` Lucretia
2019-03-12 13:17 ` Olivier Henley
2019-03-12 16:32 ` Jeffrey R. Carter
2019-03-12 16:56 ` Lucretia
2019-03-12 17:20 ` Lucretia
2019-03-12 18:14 ` Olivier Henley
2019-03-12 19:21 ` Lucretia
2019-03-12 21:53 ` Randy Brukardt
2019-03-13 10:50 ` Jere
2019-03-17 12:52 ` Optikos
2019-03-17 16:37 ` Luke A. Guest
2019-03-17 16:48 ` Paul Rubin
2019-03-20 0:49 ` Optikos
2019-03-20 1:04 ` Paul Rubin
2019-03-20 1:19 ` Optikos
2019-03-18 23:36 ` Randy Brukardt
2019-03-19 2:18 ` Optikos
2019-03-19 8:44 ` Dmitry A. Kazakov
2019-03-19 9:53 ` Optikos
2019-03-19 22:13 ` Randy Brukardt
2019-03-19 22:26 ` Paul Rubin
2019-03-20 1:08 ` Jere
2019-03-22 2:26 ` Randy Brukardt
2019-03-23 15:56 ` Jeffrey R. Carter
2019-03-23 21:38 ` Paul Rubin
2019-03-19 22:36 ` Optikos
2019-03-19 23:13 ` Randy Brukardt
2019-03-20 1:28 ` Jere
2019-03-20 8:42 ` Dmitry A. Kazakov
2019-03-22 2:00 ` Randy Brukardt
2019-03-22 11:10 ` Jere
2019-03-23 8:03 ` Randy Brukardt
2019-03-23 21:32 ` Jere
2019-03-20 7:59 ` Optikos
2019-03-22 2:16 ` Randy Brukardt
2019-03-22 8:38 ` Optikos
2019-03-22 10:54 ` Jere
2019-03-23 7:53 ` Randy Brukardt
2019-03-23 13:59 ` Jere
2019-03-23 21:19 ` Jere
2019-03-23 21:29 ` Paul Rubin
2019-03-26 8:09 ` Optikos
2019-03-20 1:20 ` Jere
2019-03-22 2:30 ` Randy Brukardt
2019-03-22 9:08 ` Dmitry A. Kazakov
2019-03-22 22:23 ` Optikos
2019-03-27 19:20 ` G. B.
2019-03-27 21:02 ` Paul Rubin
2019-03-28 7:01 ` Maciej Sobczak
2019-03-28 7:17 ` Paul Rubin
2019-03-28 8:39 ` Simon Wright
2019-03-30 4:31 ` Paul Rubin
2019-03-30 22:14 ` Robert A Duff
2019-03-30 22:55 ` Paul Rubin
2019-03-28 9:06 ` Dmitry A. Kazakov
2019-03-28 20:48 ` G. B.
2019-03-29 5:13 ` Bojan Bozovic
2019-03-29 8:13 ` Dmitry A. Kazakov
2019-03-29 6:57 ` Maciej Sobczak
2019-03-29 7:13 ` Paul Rubin
2019-03-29 8:39 ` Dmitry A. Kazakov
2019-04-01 15:13 ` Optikos
2019-04-01 16:51 ` Dmitry A. Kazakov
2019-04-01 21:42 ` Randy Brukardt
2019-04-02 8:30 ` Dmitry A. Kazakov
2019-04-02 15:53 ` Anh Vo
2019-03-19 22:04 ` Randy Brukardt
2019-03-19 22:22 ` Paul Rubin
2019-03-19 23:01 ` Randy Brukardt
2019-03-19 9:37 ` Optikos
2019-03-19 22:21 ` Randy Brukardt
2019-03-29 17:56 ` Florian Weimer
2019-03-29 22:17 ` Randy Brukardt
2019-03-29 22:35 ` Florian Weimer
2019-04-01 21:17 ` Randy Brukardt
2019-03-29 17:41 ` Florian Weimer
2019-03-29 22:16 ` Randy Brukardt
2019-03-29 22:43 ` Florian Weimer
2019-04-01 21:29 ` Randy Brukardt
2019-04-01 22:14 ` Simon Wright
2019-04-02 21:55 ` Randy Brukardt
2019-04-04 15:07 ` Simon Wright
2019-03-12 21:41 ` Randy Brukardt
2019-03-13 9:10 ` Maciej Sobczak
2019-03-13 11:08 ` Jere
2019-03-13 11:11 ` Jere
2019-03-13 11:59 ` Jere
2019-03-13 13:44 ` Olivier Henley
2019-03-13 15:56 ` Simon Wright
2019-03-13 16:25 ` Olivier Henley
2019-03-14 0:40 ` Simon Wright
2019-03-13 16:27 ` Olivier Henley
2019-03-14 22:41 ` Randy Brukardt
2019-03-16 21:30 ` Olivier Henley
2019-03-29 17:38 ` Florian Weimer
2019-03-13 13:23 ` Olivier Henley
2019-03-22 11:10 ` Lucretia
2019-03-22 14:09 ` J-P. Rosen
2019-03-22 16:41 ` Jeffrey R. Carter
2019-03-22 17:29 ` Paul Rubin
2019-03-22 22:36 ` Optikos
2019-04-01 7:28 ` gautier_niouzes
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox