Если Вы обращаетесь к этот плагин Spotify Rhythmbox , то я боюсь, что ответ не, нет способа установить его другой , чем создание всего Rhythmbox с ним .
Также уведомление, что код для того плагина не затрагивался в течение 3 лет, таким образом, вероятно, что больше не работает с текущим кодом Rhythmbox.
, В целом, мое предложение состояло бы в том, чтобы избегать того плагина и использовать собственный клиент Spotify вместо этого.
Я согласен с Дейвом в том, что условная точка останова - это правильный путь.
Однако, чтобы сделать то, что вы просили, вы должны может использовать команду GDB commands
, чтобы установить список команд GDB, которые будут выполняться при достижении точки останова. Я считаю это невероятно полезным.
Я предлагаю записывать ваши команды GDB в файл, чтобы их было легко редактировать и легко перезагружать с помощью команды source
. Или вы можете указать командные файлы для загрузки в командной строке GDB или использовать .gdbinit, чтобы они загружались автоматически.
Предположим, у меня есть функция формат
, которая вызывается множеством других функций. Я хочу сломать его, но только после того, как была вызвана функция do_step_3
.
break do_step_3
commands
break format
continue
end
Вы можете использовать это для своей проблемы примерно так:
break func
commands
watch var
continue
end
Я не уверен, какой язык мы используем, поэтому точный ответ будет отличаться, но не могли бы вы изменить переменную на статическую, глобальную или динамически выделяемую (и не освобождайте это когда функция вернется?). Таким образом, исходный адрес не изменится, и GDB сможет установить на нем точку останова.
Вместо того, чтобы следить за значением, равным определенному значению; вы должны установить условную точку останова в строке, где вы хотите проверить значение var1
. Это должно иметь тот же эффект
, например,
(gdb) break main.c:123 if (var1 == 0)