Отладка

О структуре исполняемых файлов (коротко)

ELF:

Что нужно для отладки

cc -O0 -g

GDB

Документация

Пример на bt с несколькими функциями

   1 #include <stdio.h>
   2 int N = 42;
   3 
   4 
   5 int fun2(int n) {
   6         return n*2+1;
   7 }
   8 
   9 int fun1(int c) {
  10         c += 1;
  11         return fun2(c) + fun2(c*2);
  12 }
  13 
  14 int main(int argc, char *argv[]) {
  15         int i;
  16 
  17         for(i=0; i <10; i++)
  18                 printf("%d\n", fun1(N+i));
  19         return 0;
  20 }

Пример игры со стеком:

   1 #include <stdio.h>
   2 
   3 int tst(long *p) {
   4   long x;
   5   x = (long) p;
   6   return 0;
   7 }
   8 
   9 int tst2() {
  10   long int *a;
  11   *a = 42;
  12   return 0;
  13 }
  14 
  15 int main(int argc, char *argv[]) {
  16         long b=7;
  17         tst(&b);
  18         tst2();
  19         printf("⇒ %ld\n", b);
  20         return 0;
  21 }

Такой вот этот ваш Си! Всё можно написать))

Материалы:

Интерфейсы для gdb

Сценарии для GDB

Д/З

LecturesCMC/LinuxApplicationDevelopment2023/04_Debugging (последним исправлял пользователь FrBrGeorge 2024-05-16 15:26:56)