crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> SIGSEGV при отладке программы
void*
  опции профиля:
сообщение 27.6.2008, 11:15
Сообщение #1


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


всем добрый день! возникла проблема: при отладке программы после нажатия на кнопку, после которого должен выполняться слот:
void CPDialog::browse() {
     dir = QFileDialog::getExistingDirectory(0, tr("Обзор"), "", QFileDialog::ShowDirsOnly);
     if(!dir.isEmpty()) projectDir->setEditText(dir);
}


отладчик пишет:
warning: SNAC NP Attach!

warning: "C:\Qt\projects\myfile\debug/myfile.exe"
warning: NPGetCaps::WNNC_NET_TYPE

warning: NPGetCaps::WNNC_USER

warning: NPGetCaps::WNNC_CONNECTION

warning: NPGetCaps::WNNC_ENUMERATION

warning: NPGetCaps::WNNC_ADMIN

warning: NPGetCaps::WNNC_DIALOG

warning: NPGetCaps::WNNC_START


Program received signal SIGSEGV, Segmentation fault.
[Switching to thread 3952.0x16ac]
0x77ea0742 in _libkernel32_a_iname ()

(gdb) info program
        Using the running image of child thread 3952.0x16ac.
Program stopped at 0x77ea0742.
It stopped with signal SIGSEGV, Segmentation fault.


пробовал пропустить сигнал - не получается:
(gdb) signal 0
Continuing with no signal.

Program received signal SIGSEGV, Segmentation fault.
0x77ea0742 in _libkernel32_a_iname ()


вот что выдал backtrace:
(gdb) backtrace
#0  0x77ea0742 in _libkernel32_a_iname ()
#1  0x76332510 in _libkernel32_a_iname ()
#2  0x0747f320 in ?? ()
#3  0x77ef360b in _libkernel32_a_iname ()
#4  0x76333944 in _libkernel32_a_iname ()
#5  0x763338f2 in _libkernel32_a_iname ()
#6  0x76333bf2 in _libkernel32_a_iname ()
#7  0x75965589 in _libkernel32_a_iname ()
#8  0x75954038 in _libkernel32_a_iname ()
#9  0x7594dee2 in _libkernel32_a_iname ()
#10 0x73d339da in _libkernel32_a_iname ()
#11 0x73d33fab in _libkernel32_a_iname ()
#12 0x7ca3310b in _libkernel32_a_iname ()
#13 0x7ca33083 in _libkernel32_a_iname ()
#14 0x7ca33048 in _libkernel32_a_iname ()
#15 0x7e275eea in _libkernel32_a_iname ()
#16 0x7e275a9a in _libkernel32_a_iname ()
#17 0x7e2b1c03 in _libkernel32_a_iname ()
#18 0x75f63042 in _libkernel32_a_iname ()
#19 0x77f69588 in _libkernel32_a_iname ()
#20 0x7c927332 in _libkernel32_a_iname ()
#21 0x7c927373 in _libkernel32_a_iname ()
#22 0x7c927435 in _libkernel32_a_iname ()
#23 0x7c92740c in _libkernel32_a_iname ()
#24 0x7c80b6a3 in _libkernel32_a_iname ()


прошу помочь с данной проблемой...

ЗЫ в релизе вроде работает, но некоторые глюки все равно есть

P.P.S. gcc 3.4.2(MinGW) , gdb 5.2.1, Qt 4.4.0
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.6.2008, 15:49
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


gdb, для меня вообще загадочная софтина. Без нее все нормально. Видимо ее как-то надо настроить.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 27.6.2008, 16:23
Сообщение #3


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Litkevich Yuriy @ 27.6.2008, 16:49) *
gdb, для меня вообще загадочная софтина. Без нее все нормально. Видимо ее как-то надо настроить.
Читаем мануал: Отладка с помощью GDB
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 27.6.2008, 17:13
Сообщение #4


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


Цитата(ViGOur @ 27.6.2008, 16:23) *
Читаем мануал: Отладка с помощью GDB

кстати мануальчик этот я читал, правда на другом сайте, мне бы понять почему у меня фатальный сигнал срабатывает, кстати еще выяснил что вылетает на этой строчке:
 dir = QFileDialog::getExistingDirectory(0, tr("Обзор"), "", QFileDialog::ShowDirsOnly);

т.к. до следующей даже не доходит...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Red Devil
  опции профиля:
сообщение 27.6.2008, 18:41
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 68
Регистрация: 6.6.2008
Из: Saint-Petersburg
Пользователь №: 194

Спасибо сказали: 1 раз(а)




Репутация:   3  


Попробуй проект создать тестовый, и там тоже самое сделать.
Если там повторится - то нужно искать причины в другом месте.
Что за глюки при релизе ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 27.6.2008, 18:55
Сообщение #6


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


Цитата(Red Devil @ 27.6.2008, 18:41) *
Что за глюки при релизе ?

там странный глюк: есть кнопка связанная со слотом reject(), но при запуске программы на нее приходится нажимать два раза, т.к. с первого раза диалоговое окно не закрывается. В отладчике ничего подозрительного не нашел вроде...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 28.6.2008, 19:03
Сообщение #7





Гости








    


Установи MSVS - и используй нормальный отладчик - кучу времени сэкономишь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 28.6.2008, 19:52
Сообщение #8


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


MSVC++ почти никогда не пользовался принципиально, gdb меня как отладчик устраивает, дело не в этом. Насколько я понял где-то при щелчке на кнопку начинается бесконечная рекурсия и поэтому в backtrace столько _libkernel32_a_iname(). Вобщем выкладываю весь код, очень надеюсь на вашу помощь.

вот так создается это диалоговое окно в главном окне:
void MainWindow::newProject() { 
     CPDialog *dialog = new CPDialog(this);
     connect(dialog, SIGNAL(needCreateProject(CPDialog::ProjectType, const QString&, const QString&)),
     this, SLOT(createNewProject(CPDialog::ProjectType, const QString&, const QString&)));
     if(dialog->exec() == QDialog::Accepted || dialog->exec() == QDialog::Rejected) {
                       delete dialog;
                       }
     //...
}

вот весь класс диалогового окна:
скачать с webfile.ru
скачать с slil.ru
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 28.6.2008, 23:39
Сообщение #9





Гости








    


Выложи полностью тестовый проект, чтобы можно было его собрать.
Я думаю вряд ли кто-то будет тратить время чтобы для твого класса тестовый проект создовать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 3.7.2008, 13:25
Сообщение #10


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


короче прикол оказался в том, что под никсами (Kubuntu 8.04) никакого SIGSEGV вообще не произошло :)
поэтому у меня такое ощущение что это нативный диалог винды глюченый
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 9:31