Посмотреть на память процесса с помощью gdb (надо расписать + взять из howto по gdb простейшие команды для просмотра секций)
Сравнить вывод strace ls с выводом strace ls -l, выделить те системные вызовы, которые работают с файлами, выписать их реальную наблюдаемую последовательность в обоих случаях.
- Дана программа:
1 #include "stdio.h"
2
3 void print_scrambled(char *message) {
4 int i = 3;
5 do { printf("%c", (*message)+i); }
6 while (*++message);
7 printf("\n");
8 }
9
10 int main() {
11 char * bad_message = NULL;
12 char * good_message = "Hello, world.";
13 print_scrambled(good_message);
14 print_scrambled(bad_message);
15 }
Требуется:
Собрать её с отладочной информацией с помощью gcc
- Запустить без параметров, описать результат
Запустить под gdb:
вывести backtrace после SIGSEGV
вывести листинг секции кода в момент SIGSEGV
- вывести список локальных переменных и их значений
- вывести аргументы запуска
поставить breakpoint на main, выполнить программу пошагово
вывести на экран значение переменных bad_message, good_message
дизассемблировать функцию print_scrambled