Как точно определить, что делает программное обеспечение, когда оно застревает, не отвечает на ввод пользователя и не обновляет его отображение?Способы уловить ошибку липкости
Я пробовал oprofile, который записывает, какая функция выполняется, но это не дает мне достаточных подсказок. Он считает все, что происходит во время его работы, когда мне нужно посмотреть, что происходит, только когда программа образца застревает.
Проблема может заключаться в прерываниях, ожидающих сетевых сокетах, таймерах, обработчике событий GUI или кто знает что. Как узнать как можно больше о том, что происходит, а не только о точках выполнения каждого потока?
Софтвер интерес представляет собой Linux, построенный с использованием gcc, в основном C++, но может включать в себя другие языки, включая интерпретируемые, например. Python.
В настоящее время особый случай представляет собой Firefox, для которого я проверил источник. Firefox приостанавливает все входные и выходные данные экрана в случайном порядке, часто, примерно 5-10 секунд каждый раз. Даже если кто-то передал мне решение этой конкретной проблемы на серебряном блюде, я обязательно возьму его, но все равно буду спрашивать. Если возможно, я хотел бы изучить общие методы, которые будут применяться к любому программному обеспечению, особенно к тому, за что я несу ответственность.
На каком языке это? –
Одно большое различие между регулярным профилированием и тем, что я прошу, заключается в том, что я хочу диагностировать задержки, которые происходят случайным образом, в то время как профилирование обычно находит части кода, которые воспроизводятся медленно. – DarenW