Acest lucru este oarecum legat de gdb set overwrite log on on should overwrite gdb.txt correct? .

Să spunem că rulez o sesiune a unei aplicații. De exemplu, permiteți-mi să iau din nou exemplul qbittorrent.

Așa cum a fost împărtășit înainte, așa se întâmplă o rulare –

$ gdb qbittorrent (gdb) set logging overwrite on (gdb) set logging on (gdb) set pagination 0 (gdb) run 

un mod pe care îl știu este să ieșiți din aplicație cu grație, dar uneori aplicația se blochează / durează prea mult timp sau pur și simplu nu răspunde.

Atunci singura opțiune care rămâne la mine este folosirea CTRL+C care, dacă înțeleg corect, ucide aplicația subiacentă , în exemplul nostru qbittorrent și apoi pot să renunț la gdb prin intermediul

(gdb) quit 

Există / ar exista vreun alt mod de a părăsi aplicația și lăsa în continuare sesiunea gdb continuă să ruleze sau singura modalitate este modul brut pe care l-am menționat mai sus.

AFAI știu că eliminarea unui proces de aplicare ar trebui să fie ultima soluție și nu prima.

Comentarii

  • Când rulați sub gdb sub setările implicite, Ctrl-C nu ucide aplicația, ci doar intră în depanator, unde puteți decide ce trebuie să faceți. Utilizați cont pentru a " înghite " semnalul și aplicația continuă netulburată. Sau utilizați signal 2 pentru a transmite SIGINT (2) aplicației. Sau utilizați kill pentru a distruge aplicația.

Răspuns

Puteți utiliza semnale pentru aceasta. Înainte de a începe programul, configurați USR1 sau USR2 pentru a sparge gdb fără a afecta program:

handle SIGUSR1 nopass 

Apoi puteți rula programul și când trebuie să îl opriți, rulați kill -USR1 de la o altă coajă cu pidul adecvat (copil). gdb va întrerupe aplicația și puteți adăuga apoi puncte de întrerupere, examina starea etc. și, dacă doriți, continuați executarea cu cont.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *