Можем ли мы использовать step в GDB без точек останова?

#visual-studio #debugging #gdb

#visual-studio #отладка #gdb

Вопрос:

Во-первых, спасибо за всю помощь.

В Visual Studio мы можем выполнить Debug -> Step In без установки каких-либо точек останова. Похоже, что в GDB мы ДОЛЖНЫ использовать точки останова.

 int main ()
{
   int a = 10;
   int b = 111;
   return 0;
}
  

Моя цель — найти адреса каждой переменной (скажем, int a, int b). Я хочу знать значения до и после назначения a и b.

Если мы скомпилируем и запустим gdb с этим исходным кодом, программа завершится, и у нас не будет способа отследить стек.

Итак, есть ли способ выполнять шаг по одному оператору за раз в GDB, как мы делаем в VS?

Спасибо. (нет точки останова, невозможно использовать cout….no наблюдатели..)

Комментарии:

1. Плохой пример кода. Оптимизирующий компилятор может либо поместить a и b в регистр, либо даже полностью оптимизировать их.

2. @TurboJ Спасибо, что указали на это. Да, однако, это цель этого задания, и именно так профессор хотел показать ему в классе …

Ответ №1:

Да, вы можете вмешаться с помощью команды step (s) . Сначала вы запускаете программу (в отличие от использования run), чтобы она остановилась в начале.

Комментарии:

1. Рад, что смог помочь. Итак, вас учат программированию с использованием инструментов с открытым исходным кодом? Я рад это слышать 🙂

Ответ №2:

Вы можете поместить точку останова в main, а затем пошагово использовать next . VS делает это неявно.

Комментарии:

1. Спасибо 🙂 Да, VS делает это неявно.