Turn history saving on by default? (Re: GDB BoF notes - GNU Cauldron 2023)

Pedro Alves <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
On 2023-09-29 10:24, Lancelot SIX wrote:
>>> - Revisiting defaults
>>>
>>>    - Can we turn history saving on by default?  Maybe default to
>>>      history on home dir by default, too (~/.gdb_history).  That would
>>>      align us with bash.  Some in the room have had this enabled in
>>>      their gdbinits for so long they no longer remembered this wasn't
>>>      on by default.  Others weren't even aware you can turn this on.
>>
>> One issue I find with the bash approach is that you end up mixing history
>> between multiple unrelated sessions. Bash can't solve this but GDB possibly
>> could.
>>
>> My suggestion would be to use an approach similar to vim's swap files. As an
>> example, editing the maintainers file, I have the file ~/.local/state/nvim/swap/%home%blarsen%Documents%binutils-gdb%gdb%MAINTAINERS.swp;
>> This way you can have histories specific to any binary you're debugging
>> without mixing sessions.
>>
> 
> Hi,
> 
> With such approach, I am not really sure how to name/identify a session.
> Is that based on the name of the binary you're debugging?  If so what
> happens if you use `file another_bin`?  Either you switch to another
> "session", but really you never left GDB so that would seem odd to me,
> or you end up having history about another_bin in your first apparently
> unrelated session.

Of what happens if you start GDB without a binary at all?

> 
> Similarly, when dealing with multiple inferiors, would running `inferior
> N` switch from session to session?
> 
> I can see cases where such behavior could be helpful, but there seems
> to be a lot of edge cases where it could become strange.
> 
> My feeling for now is that the best way to achieve this is to save the
> gdb history in the current directory, with the "risk" of having plenty
> of history files left all-over the place (as you mentioned already).
> 
> I feel that having the default somewhere under $HOME / $XDG_STATE_HOME
> (as suggested by Tom) seems an "easier" default.
> 

My thoughts exactly.  +1.  

On my bash for example, I got recently annoyed with
all my ssh shells overwriting the same history file, so I came up with a way to
have easy separate bash history sessions.  But, I still think that the bash default
is OK.

The only viable options that I can think of for gdb are:

#1 - don't save history  (current default)
#2 - save history in current dir
#3 - save history in $HOME (or somewhere XDG if it makes system for the system)

#1 is of course the current default.

#2 is what I do in my .gdbinit:

 set history save on
 set history filename .gdb_history
 set history size unlimited

This works well enough for me.  It does have the downside of sprinkling .gdb_history files all
over the place, which gets a bit annoying at times.  E.g., sometimes I'll spawn gdb in a random
directory because I often use gdb as my calculator :-)  ("(gdb) p 1 + 2 * 3", etc.),
which ends up with a .gdb_history file in that dir.  Still, it's my choice, and
I am aware of the consequences.

#3 seems like a reasonable default to me, which doesn't have that "sprinkle files
throughout the filesystem" issue.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.