Если Вы работаете над унаследованным кодом (например, приложения, портированные от.NET 1.x к 2,0, или 3.5) тогда это была бы плохая идея отступить от наборов данных. Почему изменение что-то, что уже работает?
, Если Вы, однако, создаете новые приложения, там несколько вещей, которые можно процитировать:
то, Что важно, - то, что безотносительно подхода Вы используете Вас, остаются последовательными, и Вы абсолютно честны с за и против своих подходов.
, Если все остальное перестало работать (например, у Вас есть группа разработчиков, которая крайне отказывается сдвигаться с места от старых методов и скептически относится к изучению новых вещей), это очень, очень ясный знак , что Вы переросли свою команду, пора покинуть Вашу компанию!
Да! В новой версии 7.0 gdb это возможно!
Команда будет выглядеть так: « reverse-step
» или « reverse-next
».
Вы можете получить gdb-7.0 с ftp.gnu.org:/pub/gnu/gdb
Если вы столкнетесь с ошибкой: Целевой дочерний элемент не поддерживает эту команду.
затем попробуйте добавить целевую запись
в начале выполнения, после запуска запуска
.
Изменить: поскольку целевая запись GDB 7.6 устарела, используйте
целевая запись полная
вместо этого.
согласно http://sourceware.org/gdb/current/onlinedocs/gdb.html#SEC51 , и «если целевая среда поддерживает это» - да.
Если ваша программа короткая, обычный трюк состоит в следующем:
r
для перезапуска отладки GDB был создан для этого!
Каждый желает всеведущий отладчик, подобный этому : http://www.lambdacs.com/debugger/ , но их (в зависимости от языка / машины) сложно сделать, и для них требуется много бухгалтерского учета.
В настоящее время на на реальном оборудовании, а не на виртуальной машине, сделать это практически невозможно.
В настоящее время это практически невозможно сделать на реальном оборудовании, а не на виртуальной машине.
В настоящее время это практически невозможно сделать на реальном оборудовании, а не на виртуальной машине.
Краткий ответ : Нет.
Для обходного пути читайте ниже.
Хотя в строке b невозможно определить значение в строке a , можно регистрировать значение arr в точках a и b и других местах по достижении только одной точки останова.
(gdb) command 1
Введите команды, когда срабатывает точка останова 1, по одной на строку. Завершите строкой просто "конец".
continue
end
Теперь, когда все другие точки останова записи в журнал достигнуты, значение arr будет сброшено на экран но точка останова не будет ждать взаимодействия с пользователем и продолжится автоматически. Когда вы попадаете в точку останова в строке b, вы можете увидеть прошлые значения arr, которые будут записаны в сам GDB.
В зависимости от ситуации вы также можете выгрузить (и отобразить) много полезной информации. Например, вы также можете сбросить счетчик цикла (скажем, i), если указанная выше функция вызывается 10000 раз в цикле. Это действительно зависит от того, чего вы пытаетесь достичь.
Да, это возможно, GDB-7.0 поддерживает обратную отладку с такими командами, как reverse-step и reverse-continue, на машинах с родным Linux x86.
Здесь есть руководство: http://www.sourceware.org/gdb/wiki/ProcessRecord / Tutorial