Подтвердить что ты не робот

Gdb: Как сделать паузу во время выполнения цикла?

Я пишу программный рендерер в g++ под mingw32 в Windows 7, используя NetBeans 7 в качестве моей IDE.

Мне нужно было прокомментировать это в последнее время, и эта потребность дошла до критической массы, когда я уже прокладывал структуру. Я огляделся, и для меня этот ответ показывает, что обещают быть одновременно кросс-платформенными и держать вещи простыми.

Суть этого подхода состоит в том, что, возможно, самый простой (и во многом, самый точный) способ профилирования/оптимизации - просто выборочно стекать прямо сейчас, а затем останавливать выполнение... К сожалению, NetBeans выиграл Не останавливайся. Поэтому я пытаюсь выяснить, как выполнить эту выборку с помощью gdb напрямую.

Я не очень много знаю о gdb. Однако, что я могу сказать с man-страниц, это то, что вы устанавливаете контрольные точки перед запуском исполняемого файла. Это не помогает мне.

Кто-нибудь знает простой подход к получению gdb (или других инструментов gnu):

  • Образец стека, когда я говорю это (предпочтительнее)
  • Возьмите целую кучу образцов в случайные интервалы за определенный период

... укажите мою указанную конфигурацию?

4b9b3361

Ответ 1

Вы пробовали просто запустить исполняемый файл в gdb, а затем просто нажав ^ C (Ctrl+C), когда вы хотите его прерывать? Это должно привести вас к подсказке gdb, где вы можете просто запустить команду where, чтобы увидеть, где вы находитесь, а затем продолжить выполнение с помощью continue.

Если вы оказываетесь в нерелевантном потоке (например, в потоке цикла UI), используйте thread, info threads и thread n, чтобы перейти к правильному, затем выполните where.