Как использовать команду действий в инструменте GDB? - PullRequest
0 голосов
/ 31 марта 2020

Ниже приведен код, который я использовал для понимания команды действий в GDB.

#include <stdio.h>
int Use_Action(int CatchedInt, char * CatchedStr)
{
    printf("CatchedInt = %d, CatchedStr = %s\n", CatchedInt, CatchedStr);
    return 0;
}
int main(void)
{
    int PassingInt = 20;
    char PassingStr[10] = "Hello";

    Use_Action(PassingInt, PassingStr);
}

В GDB Tool я сделал следующие вещи с помощью https://sourceware.org/gdb/current/onlinedocs/gdb/Tracepoint-Actions.html

(gdb) trace Use_Action 
Tracepoint 1 at 0x1169: file action.c, line 5.
(gdb) info tracepoints 
Num     Type           Disp Enb Address            What
1       tracepoint     keep y   0x0000000000001169 in Use_Action at action.c:5
    not installed on target
(gdb) actions 
Enter actions for tracepoint 1, one per line.
End with a line saying just "end".
>collect CatchedInt
>end
(gdb) info tracepoints 
Num     Type           Disp Enb Address            What
1       tracepoint     keep y   0x0000000000001169 in Use_Action at action.c:5
        collect CatchedInt
    not installed on target

Если бы я должен был собрать значение «Catchedint» с помощью команды collect Catchedint, то как отобразить это значение. Я что-то пропустил? или я неправильно понимаю эту команду действий !!?

1 Ответ

0 голосов
/ 01 апреля 2020

Есть что-то, что я пропустил?

Да: вам нужно запустить программу во время сбора трассировки, используя команды tstart, run и tstop.

Если вы попробуете это, вы, скорее всего, получите эту ошибку:

(gdb) tstart
You can't do that when your target is `exec'

Это потому, что только некоторые цели поддерживают точки трассировки, а локальное выполнение - нет. Вместо этого вам нужно будет использовать gdbserver.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...