В следующем примере генерируются буквенные строки с заглавными буквами от A до Z и length = len.
QString randString(int len)
{
QString str;
str.resize(len);
for (int s = 0; s < len ; ++s)
str[s] = QChar('A' + char(qrand() % ('Z' - 'A')));
return str;
}
Иван, ваш настоящий вопрос: «Как мне отладить SIGSEGV?»
strace здесь редко бывает хорошим подспорьем. SIGSEGV означает, что приложение пыталось разыменовать (получить доступ) место в памяти, которое не было выделено (или не было разрешено разыменование по различным другим причинам). Скорее всего, это не связано с активностью системных вызовов, которую захватывает strace. Чтобы выяснить причину вашего сбоя, начните с понимания того, какой адрес разыменовывается и какая функция пытается это сделать. Отладчик - подходящий инструмент для этой задачи.
Вот что вам нужно сделать:
gdb <your_app_name> <your_coredump_file>
проанализировав последнюю выполненную инструкцию и используя «информационные регистры», вы увидите нужный адрес. Используя команду «bt», вы увидите стек вызовов. Подняв стек вызовов вверх, вы обнаружите, как вычисляется неверный адрес. Один из этапов вычисления адреса является причиной вашей проблемы.
Отладка - это весело, и это хорошая возможность вникнуть в нее. В этом вам могут помочь хорошая книга или несколько онлайн-статей. Удачи в Google!
Вы можете запустить firefox в режиме отладки следующим образом: firefox -d gdb
это запустит firefox внутри gdb.
Вы можете выполнить команду gdb «запустить» и получить трассировку при сбое firefox. Это может быть сложно, поскольку firefox поставляется с удаленными библиотеками, которые показывают только библиотеки и смещения кода, а не имен функций.
Другой альтернативой является запуск firefox в безопасном режиме: firefox -safe-mode и отключите все плагины, которые вы могли установить, пока он не перестанет давать сбой.
Последняя альтернатива - включить режим разработчика firefox и позволить ему отправлять сеанс сбоя firefox на сервере mozilla. Затем вы можете перейти на сайт mozilla и просмотрите подробную информацию о неудачном сеансе Firefox.