GNU bug report logs - #63084
30.0.50; gud: set breakpoint while program is running

Previous Next

Package: emacs;

Reported by: tatrics <at> gmail.com

Date: Wed, 26 Apr 2023 03:56:03 UTC

Severity: normal

Merged with 64186

Found in version 30.0.50

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 63084 in the body.
You can then email your comments to 63084 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#63084; Package emacs. (Wed, 26 Apr 2023 03:56:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to tatrics <at> gmail.com:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Wed, 26 Apr 2023 03:56:03 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: tatrics <at> gmail.com
To: bug-gnu-emacs <at> gnu.org
Subject: 30.0.50; gud: set breakpoint while program is running
Date: Tue, 25 Apr 2023 21:18:52 +0200
Hi!

When I try to set a breakpoint with
    "C-x C-a C-b" or (gud-break 1)
it doesn't seem to work.

But if I do
    (gud-call (format "break %s:%d" (buffer-file-name) (line-number-at-pos)))
it does work.



In GNU Emacs 30.0.50 (build 3, x86_64-pc-linux-gnu, GTK+ Version
 3.24.37, cairo version 1.17.8) of 2023-04-14 built on home
Repository revision: d664969544b13fe93a548c9908ce566f9b5cde9c
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101007
System Description: Arch Linux

Configured using:
 'configure --with-native-compilation=yes --with-xinput2
 --with-sound=alsa --without-compress-install --with-x-toolkit=gtk3
 --without-xaw3d --without-gconf --prefix=/usr --sysconfdir=/etc
 --libexecdir=/usr/lib --localstatedir=/var --mandir=/usr/share/man
 --with-gameuser=:games --with-modules --without-libotf
 --without-m17n-flt'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER
PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS
TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: ELisp/l

Minor modes in effect:
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  hi-lock-mode: t
  smerge-mode: t
  auto-revert-mode: t
  show-smartparens-global-mode: t
  show-smartparens-mode: t
  smartparens-mode: t
  display-line-numbers-mode: t
  pyvenv-mode: t
  pdf-occur-global-minor-mode: t
  global-hl-todo-mode: t
  hl-todo-mode: t
  repeat-mode: t
  savehist-mode: t
  fido-vertical-mode: t
  icomplete-vertical-mode: t
  icomplete-mode: t
  fido-mode: t
  window-numbering-mode: t
  recentf-mode: t
  save-place-mode: t
  shell-dirtrack-mode: t
  yas-minor-mode: t
  minibuffer-depth-indicate-mode: t
  global-subword-mode: t
  subword-mode: t
  override-global-mode: t
  desktop-save-mode: t
  delete-selection-mode: t
  server-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tab-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/home/tatrix/.emacs.d/elpa/cmake-mode-20221130.1357/cmake-mode hides /usr/share/emacs/site-lisp/cmake-mode
~/.emacs.d/scel/el/sclang-util hides /usr/share/emacs/site-lisp/SuperCollider/sclang-util
~/.emacs.d/scel/el/sclang-interp hides /usr/share/emacs/site-lisp/SuperCollider/sclang-interp
~/.emacs.d/scel/el/sclang hides /usr/share/emacs/site-lisp/SuperCollider/sclang
~/.emacs.d/scel/el/sclang-menu hides /usr/share/emacs/site-lisp/SuperCollider/sclang-menu
~/.emacs.d/scel/el/sclang-document hides /usr/share/emacs/site-lisp/SuperCollider/sclang-document
~/.emacs.d/scel/el/sclang-dev hides /usr/share/emacs/site-lisp/SuperCollider/sclang-dev
~/.emacs.d/scel/el/sclang-browser hides /usr/share/emacs/site-lisp/SuperCollider/sclang-browser
~/.emacs.d/scel/el/sclang-widgets hides /usr/share/emacs/site-lisp/SuperCollider/sclang-widgets
~/.emacs.d/scel/el/sclang-help hides /usr/share/emacs/site-lisp/SuperCollider/sclang-help
~/.emacs.d/scel/el/sclang-server hides /usr/share/emacs/site-lisp/SuperCollider/sclang-server
~/.emacs.d/scel/el/sclang-mode hides /usr/share/emacs/site-lisp/SuperCollider/sclang-mode
~/.emacs.d/scel/el/sclang-minor-mode hides /usr/share/emacs/site-lisp/SuperCollider/sclang-minor-mode
~/.emacs.d/scel/el/sclang-keys hides /usr/share/emacs/site-lisp/SuperCollider/sclang-keys
~/.emacs.d/scel/el/sclang-language hides /usr/share/emacs/site-lisp/SuperCollider/sclang-language
/home/tatrix/.emacs.d/elpa/transient-20221202.1727/transient hides /usr/share/emacs/30.0.50/lisp/transient
/home/tatrix/.emacs.d/elpa/use-package-2.4.4/use-package-bind-key hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-bind-key
/home/tatrix/.emacs.d/elpa/use-package-2.4.4/use-package-lint hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-lint
/home/tatrix/.emacs.d/elpa/use-package-2.4.4/use-package-core hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-core
/home/tatrix/.emacs.d/elpa/use-package-2.4.4/use-package-jump hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-jump
/home/tatrix/.emacs.d/elpa/use-package-2.4.4/use-package-ensure-system-package hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-ensure-system-package
/home/tatrix/.emacs.d/elpa/bind-key-2.4.1/bind-key hides /usr/share/emacs/30.0.50/lisp/use-package/bind-key
/home/tatrix/.emacs.d/elpa/use-package-2.4.4/use-package-diminish hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-diminish
/home/tatrix/.emacs.d/elpa/use-package-2.4.4/use-package hides /usr/share/emacs/30.0.50/lisp/use-package/use-package
/home/tatrix/.emacs.d/elpa/use-package-2.4.4/use-package-delight hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-delight
/home/tatrix/.emacs.d/elpa/use-package-2.4.4/use-package-ensure hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-ensure

Features:
(shadow sort emacsbug find-dired ielm macros ispell nodejs-repl
vc-annotate mail-extr arc-mode archive-mode graphviz-dot-mode goto-addr
tabify man semantic/symref/grep semantic/symref em-unix em-term term
disp-table ehelp em-script em-prompt em-pred em-ls em-hist em-glob
em-extpipe em-cmpl em-dirs em-basic em-banner em-alias em-smart esh-mode
esh-var net-utils prescient char-fold prescient-autoloads loaddefs-gen
lisp-mnt mm-archive network-stream url-cache url-http url-auth url-gw
nsm finder-inf cus-start vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs
vc-rcs log-view magit-extras magit-bookmark magit-submodule
magit-obsolete magit-blame magit-stash magit-reflog magit-bisect
magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit
magit-sequence magit-notes magit-worktree magit-tag magit-merge
magit-branch magit-reset magit-files magit-refs magit-status magit
magit-repos magit-apply magit-wip magit-log magit-diff git-commit
log-edit pcvs-util add-log magit-core magit-autorevert magit-margin
magit-transient magit-process with-editor magit-mode magit-git
completion misc cl-print cmacexp magit-base which-func magit-section crm
compat-27 compat-26 info-look misearch multi-isearch shortdoc dabbrev
pulse smartparens-go go-mode find-file ffap orderless asm-mode
emacs-news-mode restclient mule-util make-mode dired-aux flymake-cc
citre citre-global citre-tags citre-ctags citre-readtags
citre-readtags-tables citre-backend-interface citre-ui-peek color
citre-ui-jump citre-common-tag citre-common-util c-ts-mode hi-lock
smerge-mode diff vc bug-reference autorevert smartparens-config
smartparens-javascript smartparens-org smartparens-text
smartparens-python smartparens-c smartparens display-line-numbers time
inspector edebug treeview tshell transient erc erc-backend erc-networks
erc-common erc-compat erc-loaddefs alert log4e notifications diary-lib
diary-loaddefs cal-iso vc-git vc-dispatcher org-indent oc-basic ol-eww
eww url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect
gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum shr
pixel-fill kinsoku url-file svg dom gnus-group gnus-undo gnus-start
gnus-dbus dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo gnus-spec
gnus-int gnus-range message sendmail yank-media puny rfc822 mml mml-sec
epa epg rfc6068 epg-config mm-decode mm-bodies mm-encode mail-parse
rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils mailheader
gnus-win gnus nnheader gnus-util mail-utils range mm-util mail-prsvr
ol-docview doc-view ol-bibtex bibtex ol-bbdb ol-w3m ol-doi org-link-doi
face-remap org-agenda org-element org-persist xdg org-id avl-tree
org-refile xml gntp highlight-indentation company-capf company help-fns
radix-tree elpy elpy-rpc pyvenv elpy-shell elpy-profile elpy-django
elpy-refactor diff-mode python ido hideshow grep etags fileloop
pdf-occur ibuf-ext ibuffer ibuffer-loaddefs tablist advice
tablist-filter semantic/wisent/comp semantic/wisent
semantic/wisent/wisent semantic/util-modes semantic/util semantic
semantic/tag semantic/lex semantic/fw mode-local cedet pdf-isearch
pdf-misc pdf-loader pdf-tools pdf-view bookmark jka-compr pdf-cache
pdf-info tq pdf-util pdf-macs image-mode dired dired-loaddefs exif
sql-indent sql view hl-todo compat compat-macs kotlin-mode
kotlin-mode-lexer typescript-mode jai-mode derived cl let-alist repeat
gdb-mi bindat gud dumb-jump popup eglot external-completion jsonrpc xref
flymake-proc flymake thingatpt ert ewoc debug backtrace filenotify
compile text-property-search pcase savehist icomplete deadgrep project
spinner dash s transpose-frame window-numbering recentf tree-widget
saveplace tramp-sh tramp tramp-loaddefs trampver tramp-integration
tramp-compat shell parse-time iso8601 ls-lisp yasnippet-snippets
yasnippet mb-depth js c-ts-common treesit imenu cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
use-package-bind-key cap-words superword subword edmacro kmacro bind-key
easy-mmode eshell esh-cmd generator esh-ext esh-opt esh-proc esh-io
esh-arg esh-module esh-groups esh-util files-x desktop frameset delsel
org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src
ob-comint org-pcomplete pcomplete comint ansi-osc ansi-color ring
org-list org-footnote org-faces org-entities time-date noutline outline
ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold
org-fold-core org-keys oc org-loaddefs find-func cal-menu calendar
cal-loaddefs org-version org-compat org-macs format-spec
use-package-core comp comp-cstr warnings cl-extra help-mode cus-edit pp
cus-load icons wid-edit server zig-mode-autoloads hl-todo-autoloads
cmake-mode-autoloads magit-autoloads consult-autoloads wgrep-autoloads
kakoune-autoloads corfu-autoloads loc-changes-autoloads
deadgrep-autoloads shader-mode-autoloads rustic-autoloads
rust-mode-autoloads orderless-autoloads undo-tree-autoloads f-autoloads
multiple-cursors-autoloads transpose-frame-autoloads inspector-autoloads
treeview-autoloads kotlin-mode-autoloads pdf-tools-autoloads
tablist-autoloads graphviz-dot-mode-autoloads magit-section-autoloads
yasnippet-snippets-autoloads async-autoloads nodejs-repl-autoloads
use-package-autoloads bind-key-autoloads spinner-autoloads
load-relative-autoloads ryo-modal-autoloads dumb-jump-autoloads
popup-autoloads dart-mode-autoloads smartparens-autoloads dash-autoloads
vertico-autoloads expand-region-autoloads flutter-autoloads
queue-autoloads restclient-autoloads test-simple-autoloads
xterm-color-autoloads avy-autoloads elpy-autoloads s-autoloads
yasnippet-autoloads pyvenv-autoloads highlight-indentation-autoloads
company-autoloads systemd-autoloads rx citre-autoloads alert-autoloads
log4e-autoloads gntp-autoloads markdown-mode-autoloads
git-commit-autoloads with-editor-autoloads transient-autoloads info
compat-autoloads package browse-url url url-proxy url-privacy url-expand
url-methods url-history url-cookie generate-lisp-file url-domsuf
url-util mailcap url-handlers url-parse auth-source cl-seq eieio
eieio-core cl-macs password-cache json subr-x map byte-opt gv bytecomp
byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv
eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd
fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting cairo
move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process
native-compile emacs)

Memory information:
((conses 16 1699631 306868)
 (symbols 48 65082 11)
 (strings 32 318425 37548)
 (string-bytes 1 10087048)
 (vectors 16 121578)
 (vector-slots 8 3145591 317141)
 (floats 8 1064 1366)
 (intervals 56 97458 3425)
 (buffers 984 239))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63084; Package emacs. (Wed, 26 Apr 2023 06:11:02 GMT) Full text and rfc822 format available.

Message #8 received at 63084 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: tatrics <at> gmail.com
Cc: 63084 <at> debbugs.gnu.org
Subject: Re: bug#63084: 30.0.50; gud: set breakpoint while program is running
Date: Wed, 26 Apr 2023 09:10:55 +0300
> From: tatrics <at> gmail.com
> Date: Tue, 25 Apr 2023 21:18:52 +0200
> 
> When I try to set a breakpoint with
>     "C-x C-a C-b" or (gud-break 1)
> it doesn't seem to work.

I cannot reproduce this: "C-x C-a C-b" does work for me.  Please
describe the recipe for reproducing the problem completely, starting
from "emacs -Q" and including all the commands you need to type/invoke
to reproduce the issue.

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63084; Package emacs. (Wed, 26 Apr 2023 08:50:02 GMT) Full text and rfc822 format available.

Message #11 received at 63084 <at> debbugs.gnu.org (full text, mbox):

From: TatriX <tatrics <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 63084 <at> debbugs.gnu.org
Subject: Re: bug#63084: 30.0.50; gud: set breakpoint while program is running
Date: Wed, 26 Apr 2023 10:48:53 +0200
[Message part 1 (text/plain, inline)]
Oh, sorry. I tried on a different machine, and realized one have to use
"run&".

So, here's what I did:

$ cat main.c
    #include <stdio.h>
    #include <unistd.h>

    int main(void) {
        for (int i = 0; ; i++) {
            printf("%d\n", i);
            sleep(1);
        }
    }

$ gcc -g -o break main.c
$ emacs -Q main.c
M-x gdb RET
# in *gud-break*, NOTE it's "run&"
(gdb) run&
# in main.c
(goto-line 6)
(gud-break 1) ; or C-x C-a C-b
# nothing happens
M-: (gud-call "break 6") RET
# breakpoint is set and process execution is paused on hitting that
breakpoint

Hope that's more clear now!

On Wed, Apr 26, 2023 at 8:10 AM Eli Zaretskii <eliz <at> gnu.org> wrote:

> > From: tatrics <at> gmail.com
> > Date: Tue, 25 Apr 2023 21:18:52 +0200
> >
> > When I try to set a breakpoint with
> >     "C-x C-a C-b" or (gud-break 1)
> > it doesn't seem to work.
>
> I cannot reproduce this: "C-x C-a C-b" does work for me.  Please
> describe the recipe for reproducing the problem completely, starting
> from "emacs -Q" and including all the commands you need to type/invoke
> to reproduce the issue.
>
> Thanks.
>
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63084; Package emacs. (Wed, 26 Apr 2023 09:45:01 GMT) Full text and rfc822 format available.

Message #14 received at 63084 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: TatriX <tatrics <at> gmail.com>
Cc: 63084 <at> debbugs.gnu.org
Subject: Re: bug#63084: 30.0.50; gud: set breakpoint while program is running
Date: Wed, 26 Apr 2023 12:44:29 +0300
> From: TatriX <tatrics <at> gmail.com>
> Date: Wed, 26 Apr 2023 10:48:53 +0200
> Cc: 63084 <at> debbugs.gnu.org
> 
> Oh, sorry. I tried on a different machine, and realized one have to use "run&".
> 
> So, here's what I did:
> 
> $ cat main.c
>     #include <stdio.h>
>     #include <unistd.h>
> 
>     int main(void) {
>         for (int i = 0; ; i++) {
>             printf("%d\n", i);
>             sleep(1);
>         }
>     }
> 
> $ gcc -g -o break main.c
> $ emacs -Q main.c
> M-x gdb RET
> # in *gud-break*, NOTE it's "run&"
> (gdb) run&
> # in main.c
> (goto-line 6)
> (gud-break 1) ; or C-x C-a C-b
> # nothing happens
> M-: (gud-call "break 6") RET
> # breakpoint is set and process execution is paused on hitting that breakpoint

What is the value of gdb-running and of gdb-non-stop after you "run&"
the program?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63084; Package emacs. (Wed, 26 Apr 2023 11:20:02 GMT) Full text and rfc822 format available.

Message #17 received at 63084 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Ken Brown <kbrown <at> cornell.edu>
Cc: tatrics <at> gmail.com, 63084 <at> debbugs.gnu.org
Subject: Re: bug#63084: 30.0.50; gud: set breakpoint while program is running
Date: Wed, 26 Apr 2023 14:19:31 +0300
> Cc: 63084 <at> debbugs.gnu.org
> Date: Wed, 26 Apr 2023 12:44:29 +0300
> From: Eli Zaretskii <eliz <at> gnu.org>
> 
> > From: TatriX <tatrics <at> gmail.com>
> > Date: Wed, 26 Apr 2023 10:48:53 +0200
> > Cc: 63084 <at> debbugs.gnu.org
> > 
> > Oh, sorry. I tried on a different machine, and realized one have to use "run&".
> > 
> > So, here's what I did:
> > 
> > $ cat main.c
> >     #include <stdio.h>
> >     #include <unistd.h>
> > 
> >     int main(void) {
> >         for (int i = 0; ; i++) {
> >             printf("%d\n", i);
> >             sleep(1);
> >         }
> >     }
> > 
> > $ gcc -g -o break main.c
> > $ emacs -Q main.c
> > M-x gdb RET
> > # in *gud-break*, NOTE it's "run&"
> > (gdb) run&
> > # in main.c
> > (goto-line 6)
> > (gud-break 1) ; or C-x C-a C-b
> > # nothing happens
> > M-: (gud-call "break 6") RET
> > # breakpoint is set and process execution is paused on hitting that breakpoint
> 
> What is the value of gdb-running and of gdb-non-stop after you "run&"
> the program?

Ken, could you please take a look at this bug report?  AFAICT, it has
something to do with the code you changed some 11 years ago (see
bug#9878).

Basically, what "M-x gdb" now does is send the "-gdb-set non-stop 1"
command, then, when we get a valid response for it, it sends the
"-gdb-set target-async 1" command.  So far so good, but when we get
the response for the latter, we send the "-list-target-features"
command and expect it to report "async" as one of the features, and if
not, we decide that non-stop mode is not supported.

My testing indicates that -list-target-features will only report
"async" after we run the program or attach to a process.  So we are
(almost) always disabling the non-stop mode, which doesn't seem right
to me.

So I'm interested to know how you tested this particular addition of
the -list-target-features command back then (if you remember).  Also,
what happens today when you start "M-x gdb" with a modern version of
GDB that does support target-async and non-stop mode.

The root cause that "C-x C-a C-b" doesn't work in the OP is that
gud-break (and any other command defined via gud-def) does nothing
when gud-running is non-nil.  This needs to be changed if we are
running the program in the background, but the question is how to know
that reliably, and that is related -list-target-features, among other
things.

TIA




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63084; Package emacs. (Wed, 26 Apr 2023 11:50:02 GMT) Full text and rfc822 format available.

Message #20 received at 63084 <at> debbugs.gnu.org (full text, mbox):

From: TatriX <tatrics <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 63084 <at> debbugs.gnu.org, Ken Brown <kbrown <at> cornell.edu>
Subject: Re: bug#63084: 30.0.50; gud: set breakpoint while program is running
Date: Wed, 26 Apr 2023 13:49:11 +0200
[Message part 1 (text/plain, inline)]
> What is the value of gdb-running and of gdb-non-stop after you "run&"
> the program?

ELISP> gdb-running
*** Eval error ***  Symbol’s value as variable is void: gdb-running
ELISP> gud-running
t
ELISP> gdb-non-stop
nil

On Wed, Apr 26, 2023 at 1:19 PM Eli Zaretskii <eliz <at> gnu.org> wrote:

> > Cc: 63084 <at> debbugs.gnu.org
> > Date: Wed, 26 Apr 2023 12:44:29 +0300
> > From: Eli Zaretskii <eliz <at> gnu.org>
> >
> > > From: TatriX <tatrics <at> gmail.com>
> > > Date: Wed, 26 Apr 2023 10:48:53 +0200
> > > Cc: 63084 <at> debbugs.gnu.org
> > >
> > > Oh, sorry. I tried on a different machine, and realized one have to
> use "run&".
> > >
> > > So, here's what I did:
> > >
> > > $ cat main.c
> > >     #include <stdio.h>
> > >     #include <unistd.h>
> > >
> > >     int main(void) {
> > >         for (int i = 0; ; i++) {
> > >             printf("%d\n", i);
> > >             sleep(1);
> > >         }
> > >     }
> > >
> > > $ gcc -g -o break main.c
> > > $ emacs -Q main.c
> > > M-x gdb RET
> > > # in *gud-break*, NOTE it's "run&"
> > > (gdb) run&
> > > # in main.c
> > > (goto-line 6)
> > > (gud-break 1) ; or C-x C-a C-b
> > > # nothing happens
> > > M-: (gud-call "break 6") RET
> > > # breakpoint is set and process execution is paused on hitting that
> breakpoint
> >
> > What is the value of gdb-running and of gdb-non-stop after you "run&"
> > the program?
>
> Ken, could you please take a look at this bug report?  AFAICT, it has
> something to do with the code you changed some 11 years ago (see
> bug#9878).
>
> Basically, what "M-x gdb" now does is send the "-gdb-set non-stop 1"
> command, then, when we get a valid response for it, it sends the
> "-gdb-set target-async 1" command.  So far so good, but when we get
> the response for the latter, we send the "-list-target-features"
> command and expect it to report "async" as one of the features, and if
> not, we decide that non-stop mode is not supported.
>
> My testing indicates that -list-target-features will only report
> "async" after we run the program or attach to a process.  So we are
> (almost) always disabling the non-stop mode, which doesn't seem right
> to me.
>
> So I'm interested to know how you tested this particular addition of
> the -list-target-features command back then (if you remember).  Also,
> what happens today when you start "M-x gdb" with a modern version of
> GDB that does support target-async and non-stop mode.
>
> The root cause that "C-x C-a C-b" doesn't work in the OP is that
> gud-break (and any other command defined via gud-def) does nothing
> when gud-running is non-nil.  This needs to be changed if we are
> running the program in the background, but the question is how to know
> that reliably, and that is related -list-target-features, among other
> things.
>
> TIA
>
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63084; Package emacs. (Fri, 05 May 2023 05:52:01 GMT) Full text and rfc822 format available.

Message #23 received at 63084 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: kbrown <at> cornell.edu
Cc: tatrics <at> gmail.com, 63084 <at> debbugs.gnu.org
Subject: Re: bug#63084: 30.0.50; gud: set breakpoint while program is running
Date: Fri, 05 May 2023 08:52:26 +0300
Ping!  Ken, could you please look into this, if you have time?

> Cc: tatrics <at> gmail.com, 63084 <at> debbugs.gnu.org
> Date: Wed, 26 Apr 2023 14:19:31 +0300
> From: Eli Zaretskii <eliz <at> gnu.org>
> 
> > Cc: 63084 <at> debbugs.gnu.org
> > Date: Wed, 26 Apr 2023 12:44:29 +0300
> > From: Eli Zaretskii <eliz <at> gnu.org>
> > 
> > > From: TatriX <tatrics <at> gmail.com>
> > > Date: Wed, 26 Apr 2023 10:48:53 +0200
> > > Cc: 63084 <at> debbugs.gnu.org
> > > 
> > > Oh, sorry. I tried on a different machine, and realized one have to use "run&".
> > > 
> > > So, here's what I did:
> > > 
> > > $ cat main.c
> > >     #include <stdio.h>
> > >     #include <unistd.h>
> > > 
> > >     int main(void) {
> > >         for (int i = 0; ; i++) {
> > >             printf("%d\n", i);
> > >             sleep(1);
> > >         }
> > >     }
> > > 
> > > $ gcc -g -o break main.c
> > > $ emacs -Q main.c
> > > M-x gdb RET
> > > # in *gud-break*, NOTE it's "run&"
> > > (gdb) run&
> > > # in main.c
> > > (goto-line 6)
> > > (gud-break 1) ; or C-x C-a C-b
> > > # nothing happens
> > > M-: (gud-call "break 6") RET
> > > # breakpoint is set and process execution is paused on hitting that breakpoint
> > 
> > What is the value of gdb-running and of gdb-non-stop after you "run&"
> > the program?
> 
> Ken, could you please take a look at this bug report?  AFAICT, it has
> something to do with the code you changed some 11 years ago (see
> bug#9878).
> 
> Basically, what "M-x gdb" now does is send the "-gdb-set non-stop 1"
> command, then, when we get a valid response for it, it sends the
> "-gdb-set target-async 1" command.  So far so good, but when we get
> the response for the latter, we send the "-list-target-features"
> command and expect it to report "async" as one of the features, and if
> not, we decide that non-stop mode is not supported.
> 
> My testing indicates that -list-target-features will only report
> "async" after we run the program or attach to a process.  So we are
> (almost) always disabling the non-stop mode, which doesn't seem right
> to me.
> 
> So I'm interested to know how you tested this particular addition of
> the -list-target-features command back then (if you remember).  Also,
> what happens today when you start "M-x gdb" with a modern version of
> GDB that does support target-async and non-stop mode.
> 
> The root cause that "C-x C-a C-b" doesn't work in the OP is that
> gud-break (and any other command defined via gud-def) does nothing
> when gud-running is non-nil.  This needs to be changed if we are
> running the program in the background, but the question is how to know
> that reliably, and that is related -list-target-features, among other
> things.
> 
> TIA
> 
> 
> 
> 




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63084; Package emacs. (Fri, 05 May 2023 05:53:02 GMT) Full text and rfc822 format available.

Message #26 received at 63084 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: tatrics <at> gmail.com
Cc: 63084 <at> debbugs.gnu.org
Subject: Re: bug#63084: 30.0.50; gud: set breakpoint while program is running
Date: Fri, 05 May 2023 08:53:42 +0300
Ping!  Could you please answer my questions below?  Knowing the
answers is necessary for investigating this issue.

Thanks.

> Cc: 63084 <at> debbugs.gnu.org
> Date: Wed, 26 Apr 2023 12:44:29 +0300
> From: Eli Zaretskii <eliz <at> gnu.org>
> 
> > From: TatriX <tatrics <at> gmail.com>
> > Date: Wed, 26 Apr 2023 10:48:53 +0200
> > Cc: 63084 <at> debbugs.gnu.org
> > 
> > Oh, sorry. I tried on a different machine, and realized one have to use "run&".
> > 
> > So, here's what I did:
> > 
> > $ cat main.c
> >     #include <stdio.h>
> >     #include <unistd.h>
> > 
> >     int main(void) {
> >         for (int i = 0; ; i++) {
> >             printf("%d\n", i);
> >             sleep(1);
> >         }
> >     }
> > 
> > $ gcc -g -o break main.c
> > $ emacs -Q main.c
> > M-x gdb RET
> > # in *gud-break*, NOTE it's "run&"
> > (gdb) run&
> > # in main.c
> > (goto-line 6)
> > (gud-break 1) ; or C-x C-a C-b
> > # nothing happens
> > M-: (gud-call "break 6") RET
> > # breakpoint is set and process execution is paused on hitting that breakpoint
> 
> What is the value of gdb-running and of gdb-non-stop after you "run&"
> the program?
> 
> 
> 
> 




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63084; Package emacs. (Fri, 05 May 2023 07:16:01 GMT) Full text and rfc822 format available.

Message #29 received at 63084 <at> debbugs.gnu.org (full text, mbox):

From: TatriX <tatrics <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 63084 <at> debbugs.gnu.org
Subject: Re: bug#63084: 30.0.50; gud: set breakpoint while program is running
Date: Fri, 5 May 2023 09:15:19 +0200
> Could you please answer my questions below?

Sorry, I'm not sure what questions you are referring to.

>> What is the value of gdb-running and of gdb-non-stop after you "run&"
>> the program?
> gud-running is t
> gdb-non-stop is nil

in case my last email didn't get through.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63084; Package emacs. (Sat, 06 May 2023 11:43:02 GMT) Full text and rfc822 format available.

Message #32 received at 63084 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: TatriX <tatrics <at> gmail.com>
Cc: 63084 <at> debbugs.gnu.org
Subject: Re: bug#63084: 30.0.50; gud: set breakpoint while program is running
Date: Sat, 06 May 2023 14:43:17 +0300
> From: TatriX <tatrics <at> gmail.com>
> Date: Fri, 5 May 2023 09:15:19 +0200
> Cc: 63084 <at> debbugs.gnu.org
> 
> > Could you please answer my questions below?
> 
> Sorry, I'm not sure what questions you are referring to.
> 
> >> What is the value of gdb-running and of gdb-non-stop after you "run&"
> >> the program?
> > gud-running is t
> > gdb-non-stop is nil
> 
> in case my last email didn't get through.

Thanks.  The value of gdb-non-stop is the problem: it basically means
that gdb-mi thinks GDB doesn't support async execution, and therefore
doesn't behave accordingly, which is evidenced by gud-running being
non-nil.

I hope Ken responds soon, because I think we need to redesign the part
which asks GDB about support for target-async and non-stop mode.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63084; Package emacs. (Sat, 27 May 2023 21:24:02 GMT) Full text and rfc822 format available.

Message #35 received at 63084 <at> debbugs.gnu.org (full text, mbox):

From: TatriX <tatrics <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 63084 <at> debbugs.gnu.org
Subject: Re: bug#63084: 30.0.50; gud: set breakpoint while program is running
Date: Sat, 27 May 2023 23:22:52 +0200
While we waiting for a reply, may I ask what is the relationship
between gdb-mi.el and gud.el?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63084; Package emacs. (Sun, 28 May 2023 05:28:01 GMT) Full text and rfc822 format available.

Message #38 received at 63084 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: TatriX <tatrics <at> gmail.com>
Cc: 63084 <at> debbugs.gnu.org, kbrown <at> cornell.edu
Subject: Re: bug#63084: 30.0.50; gud: set breakpoint while program is running
Date: Sun, 28 May 2023 08:28:28 +0300
> From: TatriX <tatrics <at> gmail.com>
> Date: Sat, 27 May 2023 23:22:52 +0200
> Cc: 63084 <at> debbugs.gnu.org
> 
> While we waiting for a reply

Actually, I've given up on waiting for a reply (Ken, are you there?),
so now we basically wait for me to get enough free time to work on
this non-trivial issue.  I've meanwhile set up one of my systems to
support asynchronous and non-stop execution in GDB, so that I could
test the changes.  Stay tuned.

> may I ask what is the relationship between gdb-mi.el and gud.el?

gdb-mi.el is basically a (very significant) extension of gud.el.
gdb-mi.el builds on the basic features provided by gud.el for GDB, and
adds a lot of stuff of its own, both to support the GDB/MI protocol
and provide a GUI front-end display, similar to other debugging UIs.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63084; Package emacs. (Sun, 28 May 2023 21:11:02 GMT) Full text and rfc822 format available.

Message #41 received at 63084 <at> debbugs.gnu.org (full text, mbox):

From: TatriX <tatrics <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 63084 <at> debbugs.gnu.org, kbrown <at> cornell.edu
Subject: Re: bug#63084: 30.0.50; gud: set breakpoint while program is running
Date: Sun, 28 May 2023 23:10:21 +0200
[Message part 1 (text/plain, inline)]
Nice! Thank you!

I tend to use `M-x gdb` with `gdb-many-windows` disabled but easily
reachable via a custom keybinding that toggles it.

One feature I'm really missing is a variable watcher.

There's a locals view which is useful sometimes, but gets messy when
there are handfull of variables in scope.  Then there's a speedbar,
but as far as I can tell it's impossible to make it into a regular
window, which means it and cannot participate in my regular emacs
window workflow, which is sub-optimal. But the biggest issue with it
is that it forgets what was added to it on every program restart,
making it pretty much unusable for my needs.

I've played a bit with gdb-mi and managed to make something that
somewhat works. Please check a screenshot in the attachment.

I can add variables to watch via the minibuffer. They get updated in
the *gdb-watch* window through `-data-evaluate-expression` in the
`gdb-stopped-functions` hook.

I've also started looking at "GDB/MI Variable Objects"(1) which looks
like a proper way to add that functionality. But it requires a bit
more work.

How do you feel about having something similar in gdb-mi?

1: https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Variable-Objects.html#GDB_002fMI-Variable-Objects
[2023-05-28-225817_3838x2124_scrot.png (image/png, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63084; Package emacs. (Mon, 29 May 2023 11:45:02 GMT) Full text and rfc822 format available.

Message #44 received at 63084 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: TatriX <tatrics <at> gmail.com>
Cc: 63084 <at> debbugs.gnu.org, kbrown <at> cornell.edu
Subject: Re: bug#63084: 30.0.50; gud: set breakpoint while program is running
Date: Mon, 29 May 2023 14:45:22 +0300
> From: TatriX <tatrics <at> gmail.com>
> Date: Sun, 28 May 2023 23:10:21 +0200
> Cc: 63084 <at> debbugs.gnu.org, kbrown <at> cornell.edu
> 
> One feature I'm really missing is a variable watcher.
> 
> There's a locals view which is useful sometimes, but gets messy when
> there are handfull of variables in scope.  Then there's a speedbar,
> but as far as I can tell it's impossible to make it into a regular
> window, which means it and cannot participate in my regular emacs
> window workflow, which is sub-optimal.

I'm not sure I understand: how does using Speedbar interfere with your
workflow?

> But the biggest issue with it is that it forgets what was added to
> it on every program restart, making it pretty much unusable for my
> needs.

I'm not sure how can this work otherwise: watchpoints are usually
context-dependent, and are automatically deleted when their component
variables go out of scope.  How would you know when to re-apply
watchpoint settings when you re-run the program?  You must be in the
correct call-stack frame to be able to do that, or else all you get as
an error from GDB.

The way to automate re-application of watchpoints is to create one or
more breakpoints, at suitable locations in the program, and have the
"commands" of those breakpoints insert watchpoints, then continue the
program.  This is usually done in a .gdbinit file (or some other
script file read by GDB), and I'm not sure I understand how you can do
that programmatically, since Emacs is not really aware of GDB
call-stack frames.

> I've played a bit with gdb-mi and managed to make something that
> somewhat works. Please check a screenshot in the attachment.
> 
> I can add variables to watch via the minibuffer. They get updated in
> the *gdb-watch* window through `-data-evaluate-expression` in the
> `gdb-stopped-functions` hook.
> 
> I've also started looking at "GDB/MI Variable Objects"(1) which looks
> like a proper way to add that functionality. But it requires a bit
> more work.

AFAIK, Variable Objects cannot be replacements for watchpoints, since
GDB must actively poll for updates of the values, as opposed to
watchpoints, whose changes cause the program to stop.

> How do you feel about having something similar in gdb-mi?

It would be a useful addition, but I'd expect it to be easily doable
by reusing what we currently have (I'm not sure I understand why we
currently insist on Speedbar for these displays).

Anyway, this should be discussed as a separate feature request, not as
part of this bug report.




Merged 63084 64186. Request was from Eli Zaretskii <eliz <at> gnu.org> to control <at> debbugs.gnu.org. (Wed, 21 Jun 2023 13:13:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63084; Package emacs. (Tue, 11 Jul 2023 07:32:02 GMT) Full text and rfc822 format available.

Message #49 received at 63084 <at> debbugs.gnu.org (full text, mbox):

From: TatriX <tatrics <at> gmail.com>
To: 63084 <at> debbugs.gnu.org
Subject: Re: bug#63084: closed (Re: bug#64186: Patch: Suppress deprecated
 '-gdb-set target-async' warning message in gdb-mi.el)
Date: Tue, 11 Jul 2023 09:31:18 +0200
Hi!
I've compiled latest master and still can't set breakpoints while the
program is running.
Am I missing anything in the config perhaps?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63084; Package emacs. (Tue, 11 Jul 2023 12:26:01 GMT) Full text and rfc822 format available.

Message #52 received at 63084 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: TatriX <tatrics <at> gmail.com>
Cc: 63084 <at> debbugs.gnu.org
Subject: Re: bug#63084: closed (Re: bug#64186: Patch: Suppress deprecated
 '-gdb-set target-async' warning message in gdb-mi.el)
Date: Tue, 11 Jul 2023 15:24:58 +0300
> From: TatriX <tatrics <at> gmail.com>
> Date: Tue, 11 Jul 2023 09:31:18 +0200
> 
> I've compiled latest master and still can't set breakpoints while the
> program is running.
> Am I missing anything in the config perhaps?

Works for me.  What exactly did you try?  Please show the exact steps.

I did the steps shown here:

  https://debbugs.gnu.org/cgi/bugreport.cgi?bug=63084#11

and after "C-x C-a C-b", the program stopped on line 6, as expected.
Then I typed "c&", and the program printed one more line, and stopped,
again as expected.  If I remove the breakpoint with "C-x C-a C-d" and
type "c&", the program starts running without stopping again.

If those steps don't work for you, please tell which GDB version are
you using (I used GDB 12.1) and on what OS.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63084; Package emacs. (Tue, 11 Jul 2023 15:31:02 GMT) Full text and rfc822 format available.

Message #55 received at 63084 <at> debbugs.gnu.org (full text, mbox):

From: TatriX <tatrics <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 63084 <at> debbugs.gnu.org
Subject: Re: bug#63084: closed (Re: bug#64186: Patch: Suppress deprecated
 '-gdb-set target-async' warning message in gdb-mi.el)
Date: Tue, 11 Jul 2023 17:30:16 +0200
I've used the same example with the same set of steps.

> If those steps don't work for you, please tell which GDB version are

GNU gdb (GDB) 13.1

Linux home 6.3.8-arch1-1 #1 SMP PREEMPT_DYNAMIC Wed, 14 Jun 2023
20:10:31 +0000 x86_64 GNU/Linux

GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.38,
cairo version 1.17.8) of 2023-07-06




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63084; Package emacs. (Tue, 11 Jul 2023 15:57:01 GMT) Full text and rfc822 format available.

Message #58 received at 63084 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: TatriX <tatrics <at> gmail.com>
Cc: 63084 <at> debbugs.gnu.org
Subject: Re: bug#63084: closed (Re: bug#64186: Patch: Suppress deprecated
 '-gdb-set target-async' warning message in gdb-mi.el)
Date: Tue, 11 Jul 2023 18:56:10 +0300
> From: TatriX <tatrics <at> gmail.com>
> Date: Tue, 11 Jul 2023 17:30:16 +0200
> Cc: 63084 <at> debbugs.gnu.org
> 
> I've used the same example with the same set of steps.
> 
> > If those steps don't work for you, please tell which GDB version are
> 
> GNU gdb (GDB) 13.1
> 
> Linux home 6.3.8-arch1-1 #1 SMP PREEMPT_DYNAMIC Wed, 14 Jun 2023
> 20:10:31 +0000 x86_64 GNU/Linux
> 
> GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.38,
> cairo version 1.17.8) of 2023-07-06

So what doesn't work, and how does it not work?  Are you saying that
you see the same behavior as before the recent changes in gdb-mi.el?
Including the fact that after "run&" the value of gud-running is t?
(It should be nil.)

If you try the same steps in "emacs -Q", does it work?  What about
"emacs -Q -nw"?

Also, do you have anything in your .gdbinit files, both system-wide
and your private ones?  If you do, maybe those settings somehow get in
the way?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63084; Package emacs. (Tue, 11 Jul 2023 17:50:02 GMT) Full text and rfc822 format available.

Message #61 received at 63084 <at> debbugs.gnu.org (full text, mbox):

From: TatriX <tatrics <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 63084 <at> debbugs.gnu.org
Subject: Re: bug#63084: closed (Re: bug#64186: Patch: Suppress deprecated
 '-gdb-set target-async' warning message in gdb-mi.el)
Date: Tue, 11 Jul 2023 19:49:15 +0200
> So what doesn't work, and how does it not work?
Did a few more tests to see what actually happens.
I'm running the same code as before in "emacs -Q"
    > run &
    C-x C-a C-b ;; sets breakpoint successfully
    C-x C-a C-d ;; removes breakpoint
    > c &
After that program continues, but 'gud-running' is now t, even if I ">
kill" the program and "> run&" it again.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63084; Package emacs. (Thu, 13 Jul 2023 06:26:01 GMT) Full text and rfc822 format available.

Message #64 received at 63084 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: TatriX <tatrics <at> gmail.com>
Cc: 63084 <at> debbugs.gnu.org
Subject: Re: bug#63084: closed (Re: bug#64186: Patch: Suppress deprecated
 '-gdb-set target-async' warning message in gdb-mi.el)
Date: Thu, 13 Jul 2023 09:26:07 +0300
> From: TatriX <tatrics <at> gmail.com>
> Date: Tue, 11 Jul 2023 19:49:15 +0200
> Cc: 63084 <at> debbugs.gnu.org
> 
> > So what doesn't work, and how does it not work?
> Did a few more tests to see what actually happens.
> I'm running the same code as before in "emacs -Q"
>     > run &
>     C-x C-a C-b ;; sets breakpoint successfully
>     C-x C-a C-d ;; removes breakpoint
>     > c &
> After that program continues, but 'gud-running' is now t, even if I ">
> kill" the program and "> run&" it again.

So it's a separate problem: some code sets gud-running even though
this is async mode.

Can you figure which function sets gud-running when you type "c&"?  My
first suspect is gdb-starting, because it sets gud-running
unconditionally instead of doing this:

  (when (not gdb-non-stop)
    (setq gud-running t))

like gdb-running does.  The other suspect is gdb-update-gud-running.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Thu, 10 Aug 2023 11:24:08 GMT) Full text and rfc822 format available.

This bug report was last modified 260 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.