Come entrare nel processo in esecuzione su gdb?


0

Quindi stavo cercando di eseguire il debug di un programma che gira su due nodi. Uso yod come lanciatore di attività.

 yod -hosts node01,node02 ./dist_task -nl 2

Il programma è bloccato. Quindi volevo usare gdb in questo modo

 yod -hosts node01,node02 gdb ./dist_task

Sono in sessione gdb in node01 ma per node02 non sono in grado di farlo. Quello che succede è che riesco a vedere il processo in esecuzione (gdb ./dist_task) sul nodo remoto (node02 di htop) ma non riesco ad affrontarlo. Ho provato a fare attach (sto solo cercando di collegarmi al processo gdb) come normalmente faremmo con un processo, ma nel mio caso dato che è già gdb ottengo informazioni sul gdb ma non sul processo.

ps: ho provato a fare xterm ma non ho avuto fortuna neanche lì (non sono in grado di far apparire due xterm)


1
Hai legato per attaccare straceal processo? A proposito waiting, non significastuck
ott--

ma in questo modo ho potuto solo vedere la chiamata di sistema .. In realtà volevo fare gdb: p .. sì U hai ragione sull'attesa / bloccato, penso che lo correggerò.
solti,

Un'altra opzione potrebbe essere ltrace, controlla se il tuo sistema lo supporta.
ott--

hmm ho ltrace .. potrei provare questo allora
solti

Risposte:


0

Stai abusando attach

Dai documenti:

attach process-id
    This command attaches to a running process—one that was started outside gdb

Puoi provare ad avviarli come yod -hosts node01,node02 ./dist_task -nl 2quindi collegandoli tramite il attachcomando dal prompt di gdb o usandogdb -a <pid>


L'ho fatto e non funziona .. dal momento che quando vado a fare il programma allegato è già in esecuzione ... Volevo fare gdb dall'inizio del programma
solti

Allora potresti voler esaminare gdbserver. In alternativa, invia un SIGINT al processo immediatamente dopo averlo avviato in modo che non continui a essere eseguito e GDB abbia qualcosa a cui collegarsi.
ssnobody,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.