Я бегу на Marvell Monahans PXA320 под Green Hills INTEGRITY 5.0.10. Я использую MULTI 4.2.3 для разработки. Я использую соединение RTSERV для отладки, меня попросили взять программу, управляемую меню.
Я заметил, что если я остановлю программу (чтобы изменить точки останова), а затем возобновлю ее, задача попадет в бесконечный цикл, отображающий меню на вкладке ввода-вывода отладчика. После каждого экземпляра меню, которое печатается, там написано, что я сделал неправильный выбор. Таким образом, некоторые входные данные, по-видимому, вводятся в задачу, как если бы я их набрал (и этот ввод, очевидно, соответствует неверному выбору меню). Я не вижу на дисплее, что это за фантомный вход.
Могу ли я что-нибудь сделать, чтобы остановить / возобновить сбой ввода-вывода?
Спасибо,
Дейв
Мое первое предположение состоит в том, что getc () (или ваш эквивалент) возвращает -1. Это может произойти, если ваши входные буферы переполнены в результате остановки приложения. I / O продолжает работать, пока приложение остановлено …
Как правило, не рекомендуется останавливать программу при отладке с помощью INTEGRITY. Как правило, лучше подключить отладчик к одному потоку (что-то простаивающее или редко используемое), установить точку останова «любая задача» в этом потоке, а затем возобновить поток. (Не закрывайте окно! Это приведет к удалению точки останова.) Вы увидите состояние «DebugBrk» в потоке, который достигает точки останова, — затем вы можете дважды щелкнуть и прикрепить к этому конкретному потоку.
Выполнение этой альтернативной процедуры должно (надеюсь!) Предотвратить ошибку ввода-вывода.
Других решений пока нет …