Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.lang.c > #28823

Jak wysterować gdb z własnego prog.?

From Jacek Marcin Jaworski <jaworski1978@adres.pl>
Newsgroups pl.comp.lang.c
Subject Jak wysterować gdb z własnego prog.?
Date 2024-05-14 17:44 +0200
Message-ID <lahf72Fh3jaU1@mid.individual.net> (permalink)

Show all headers | View raw


Dzień dobry!

Koduję dla siebie edytor programisty w w C++ z Qt. Teraz chcę wysterować 
gdb z mojego edytora programisty. Będzie to obejmowało gen. dwóch skryptów:
1. Skrypt który buduje prog. przygotowuje dane do uruchomienia 
testowego, uruchamia gdb z prog. i uruchamia skrypt sprzątający.
2. Skrypt który konf. gdb (pułapki i te sprawy).

Obecnie mam zakodowany generator skryptu 1. Przykładowy wygenerowany 
skrypt wygląda tak:

#!/bin/bash

############################################################################
# Obsługa błędów:

set -e
set -u
set -o pipefail
trap ">&2 echo 'BŁĄD wykonanie przerwane!'; exit 1;" SIGINT SIGTERM
trap '>&2 echo "BŁĄD: $? w lini: $LINENO"' ERR

############################################################################
# Uruchom:

cd $HOME/+EnergoKod/energo-tekstprofan-4
energo-budowa.sh
$HOME/+EnergoKod/energo-tekstprofan-4/skrypty/kopiuj-wtyczki.sh
cd $HOME/+EnergoKod/energo-tekstprofan-4/testy-dane
gdb $HOME/+EnergoKod/energo-tekstprofan-4/budowa/tekstprofan/tekstprofan4
cd $HOME/+EnergoKod/energo-tekstprofan-4
# Tu skrypt 1. się kończy

Ten skrypt uruchamiam QProcess::startDetached. Co gwarantuje, że nie 
jest używany fork (co by zamykało okno mojego edytora).

Jednak wygląda tak jakby przy uruchomieniu skryptu 1. wywoływany gdb 
zawieszał mój edytor tekstu. W prog. śledzącym na stosie wywołań wygląda 
to tak, że wiesza się kod bibl. Qt odpowiedzialny za obsługę zdarzenia w 
wyniku którego ma być odrysowane okno (lub jego fragment). Na 
stackoverflow.com omawiają ten problem w odp. z d. 2016-06-15, śro. 
(publikacja):

https://stackoverflow.com/questions/38404925/gdb-interrupt-running-process-without-killing-child-processes

Piszą tam coś o sygnałach sys. Uniks. Jednak dodanie po utworzeniu o. 
kl. QApplication (i przed wej. w pętlę zdarzeń):
    signal(SIGQUIT, SIG_IGN);
    signal(SIGINT, SIG_IGN);
    signal(SIGTERM, SIG_IGN);
    signal(SIGHUP, SIG_IGN);
czyli kodu który ignoruje te problematyczne sygnały, nic nie zmienia i 
mój edytor dalej jest zawieszany.

Co można zrobić żeby uruchamiany gdb nie ubijał mojego edytora programisty?

Miłego dnia!
Jacek Marcin Jaworski

Back to pl.comp.lang.c | Previous | NextNext in thread | Find similar


Thread

Jak wysterować gdb z własnego prog.? Jacek Marcin Jaworski <jaworski1978@adres.pl> - 2024-05-14 17:44 +0200
  Re: Jak wysterować gdb z własnego prog.? Jacek Marcin Jaworski <jaworski1978@adres.pl> - 2024-05-14 17:51 +0200
  Re: Jak wysterować gdb z własnego prog.? heby <heby@poczta.onet.pl> - 2024-05-14 21:07 +0200
    Re: Jak wysterować gdb z własnego prog.? Jacek Marcin Jaworski <jaworski1978@adres.pl> - 2024-05-15 22:23 +0200
      Re: Jak wysterować gdb z własnego prog.? heby <heby@poczta.onet.pl> - 2024-05-16 21:52 +0200
        Re: Jak wysterować gdb z własnego prog.? Jacek Marcin Jaworski <jaworski1978@adres.pl> - 2024-05-16 23:20 +0200
          Re: Jak wysterować gdb z własnego prog.? heby <heby@poczta.onet.pl> - 2024-05-16 23:30 +0200
            Re: Jak wysterować gdb z własnego prog.? Jacek Marcin Jaworski <jaworski1978@adres.pl> - 2024-05-17 13:34 +0200
              Re: Jak wysterować gdb z własnego prog.? heby <heby@poczta.onet.pl> - 2024-05-18 13:30 +0200

csiph-web