0%

GDB打印二维数组

  • 打印数组 p *matrix@length
  • 打印二维数组 p *matrix@cols@rows
  • 打印二维数组 printMatrix matrix cols rows
    define printMatrix
      set $arr = $arg0
      set $rows = $arg1
      set $cols = $arg2
      set $i = 0
      printf "\n"
      while $i < $rows
          set $j = 0
          while $j < $cols
              printf "%02d, ",$arr[$i][$j]
              set $j = $j + 1
          end
          printf "\n"
          set $i = $i + 1
      end
    end

source code

#include <stdio.h>

int matrix[10][10];

void print(int matrix[10][10])
{
    int i, j;
    for (i = 0; i < 10; ++i)
    {
        for (j = 0; j < 10; ++j)
            printf("%d ", matrix[i][j]);
        printf("\n");
    }
}

int main()
{
    int i, j;
    for (i = 0; i < 10; ++i)
        for (j = 0; j < 10; ++j)
            matrix[i][j] = i*10 + j;
    return 0;
}

Example

(gdb) p *matrix[1]@10
$6 = {10, 11, 12, 13, 14, 15, 16, 17, 18, 19}
(gdb) p *matrix[1]@5@2
$7 = {{10, 11, 12, 13, 14}, {15, 16, 17, 18, 19}}
(gdb) source a.gdb
(gdb) printMatrix matrix 10 10

00, 01, 02, 03, 04, 05, 06, 07, 08, 09,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
90, 91, 92, 93, 94, 95, 96, 97, 98, 99,