Я работаю над огромной программой, в которой используется (специально построенное) решение для микропоточности. Иногда случается, что мне нужно отладить сбой. В такие моменты полезно иметь возможность переключаться с одного микропотока на другой.
Если я выполняю отладку в режиме реального времени, я могу заменить все регистры на те, которые пришли из контекста микропотока. Я написал макрос, чтобы сделать это, и он работает очень хорошо.
Проблема в том, что я не могу изменить значения регистра, если я выполняю посмертную отладку (из основного файла). В таком случае я не могу сказать GDB, чтобы он изменил свое представление о текущем кадре, так как в этом случае все регистры считаются доступными только для чтения.
Есть ли способ рассказать GDB о моем пользовательском управлении контекстом?
Шахар
В GDB нет простого встроенного способа сделать это.
Я думаю, что, возможно, самый простой способ — написать версию gdbserver, которая может читать ваши основные файлы и которая представляет ваши микропотоки для gdb как реальные потоки. Там был по крайней мере один gdb-сервер, который уже может читать основные файлы, так что, возможно, это не слишком сложно. Однако я не могу сказать наверняка.
Других решений пока нет …