Обучение gdb понимать микропотоки из основных файлов

Я работаю над огромной программой, в которой используется (специально построенное) решение для микропоточности. Иногда случается, что мне нужно отладить сбой. В такие моменты полезно иметь возможность переключаться с одного микропотока на другой.

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

Проблема в том, что я не могу изменить значения регистра, если я выполняю посмертную отладку (из основного файла). В таком случае я не могу сказать GDB, чтобы он изменил свое представление о текущем кадре, так как в этом случае все регистры считаются доступными только для чтения.

Есть ли способ рассказать GDB о моем пользовательском управлении контекстом?

Шахар

2

Решение

В GDB нет простого встроенного способа сделать это.

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]