Как напечатать все номера строк в исходном файле, связанных с потоком программы в GDB - PullRequest
0 голосов
/ 15 января 2020

есть способ напечатать (или вывести в отдельный файл) все соответствующие номера строк, относящиеся к программе на C ++, в GDB

, например: source. cpp

#include <stdio.h> // line #1
int main()
{
    int i = 2;
    if(i == 1)
    {
        printf("i=1\n");
    }
    else if(i == 2)
    {
        printf("i=2\n");
    }
    else
    {
        printf("i=another\n");
    }
    return 0; // line #17
}

ожидаемый вывод: (лучше выводить вывод в файл)

источник. cpp: 2

источник. cpp: 4

источник. cpp: 5

источник. cpp: 9

источник. cpp: 11

источник. cpp: 17

1 Ответ

1 голос
/ 24 января 2020

Я думаю, вы ищете что-то вроде gcov инструмента. В любом случае, речь идет о покрытии кода, а не об интерактивной отладке. gdb также может делать что-то подобное, но gcov специализируется для такого рода анализа.

gcc code.cpp -fprofile-arcs -ftest-coverage
./a.out
gcov code.cpp

А в code.cpp.gcov вы получите:

    -:    0:Source:code.cpp
    -:    0:Graph:code.gcno
    -:    0:Data:code.gcda
    -:    0:Runs:1
    -:    0:Programs:1
    -:    1:#include <stdio.h> // line #1
    1:    2:int main()
    -:    3:{
    1:    4:    int i = 2;
    1:    5:    if(i == 1)
    -:    6:    {
#####:    7:        printf("i=1\n");
    -:    8:    }
    1:    9:    else if(i == 2)
    -:   10:    {
    1:   11:        printf("i=2\n");
    -:   12:    }
    -:   13:    else
    -:   14:    {
#####:   15:        printf("i=another\n");
    -:   16:    }
    1:   17:    return 0; // line #17
    -:   18:}
...