libusb вылетает программа, если устройство отключено |
Здравствуйте, гость ( Вход | Регистрация )
libusb вылетает программа, если устройство отключено |
MishaUA |
17.5.2013, 1:43
Сообщение
#1
|
Участник Группа: Участник Сообщений: 185 Регистрация: 28.4.2013 Пользователь №: 3810 Спасибо сказали: 13 раз(а) Репутация: 0 |
Раньше писал в билдере, там для общения с usb устройствами использовал библиотеку usblib-win32. Так как пересел на Qt, я переписал библиотеку под него (только изменил загрузку libusb0.dll), работает не плохо, но если устройство отключено, то при вызове "_usb_control_msg", которая содержится в той dll, программа завершается. В билдере, в данном случае, функция просто висела до выхода установленного таймаута.
Что мне можно сделать в данном случае? (кроме возвращения в билдер) PS: загрузку dll сделал так:
|
|
|
Litkevich Yuriy |
17.5.2013, 3:29
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
надо попробовать под отладчиком посмотреть стек вызовов при аварийном завершении.
|
|
|
MishaUA |
17.5.2013, 9:22
Сообщение
#3
|
Участник Группа: Участник Сообщений: 185 Регистрация: 28.4.2013 Пользователь №: 3810 Спасибо сказали: 13 раз(а) Репутация: 0 |
эм... Если не затруднит, напишите, пожалуйста, что именно надо сделать?
Я запускал через отладчик, после вылета программы указатель стоял на _usb_control_msg |
|
|
Litkevich Yuriy |
17.5.2013, 12:48
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
если ты используешь компилятор GCC, то его же отладчиком воспользуйся:
gdb.exe myprogram.exe затем набери в консоли gdb: >run как программа упадёт набери в консоли gdb: >backtrace он напечатает тебе стек вызовов, ну а ты его сюда прилепи, посмотреть |
|
|
MishaUA |
17.5.2013, 13:09
Сообщение
#5
|
Участник Группа: Участник Сообщений: 185 Регистрация: 28.4.2013 Пользователь №: 3810 Спасибо сказали: 13 раз(а) Репутация: 0 |
ммм, а если MinGW 4.7?
|
|
|
MishaUA |
17.5.2013, 23:58
Сообщение
#6
|
Участник Группа: Участник Сообщений: 185 Регистрация: 28.4.2013 Пользователь №: 3810 Спасибо сказали: 13 раз(а) Репутация: 0 |
упс, сорри, я затупил))))
Вот стек вызовов (из Qt Creator): Цитата 0 usb_control_msg C:\Windows\system32\libusb0.dll 0x72124070 1 usb_control_msg usb.cpp 294 0x403dab 2 usb_lib::getReport usb_lib.cpp 31 0x40351e 3 MainWindow::timerUSB mainwindow.cpp 107 0x402948 4 MainWindow::qt_static_metacall moc_mainwindow.cpp 73 0x404b22 5 QMetaObject::activate qobject.cpp 3445 0x6b97d5e5 6 QMetaObject::activate qobject.cpp 3320 0x6b97cde2 7 QTimer::timeout moc_qtimer.cpp 189 0x6b9f15a4 8 QTimer::timerEvent qtimer.cpp 250 0x6b982378 9 QObject::event qobject.cpp 1051 0x6b9758eb 10 QApplicationPrivate::notify_helper qapplication.cpp 3398 0x9bdaf5 11 QApplication::notify qapplication.cpp 2829 0x9bb45e 12 QCoreApplication::notifyInternal qcoreapplication.cpp 767 0x6b9490a6 13 QCoreApplication::sendEvent qcoreapplication.h 203 0x6ba17d1f 14 QEventDispatcherWin32Private::sendTimerEvent qeventdispatcher_win.cpp 572 0x6b9a3b74 15 qt_internal_proc qeventdispatcher_win.cpp 426 0x6b9a31f1 16 USER32!IsWindowVisible C:\Windows\system32\user32.dll 0x774486ef 17 ?? 0x132222 18 ?? 0x113 19 ?? 0x5 20 ?? ... <Более> При завершении программы указатель был на второй строчке PS: вот usb.cpp:
|
|
|
MishaUA |
18.5.2013, 3:01
Сообщение
#7
|
Участник Группа: Участник Сообщений: 185 Регистрация: 28.4.2013 Пользователь №: 3810 Спасибо сказали: 13 раз(а) Репутация: 0 |
Проблема решилась (да и была совсем в другом месте)
|
|
|
Litkevich Yuriy |
18.5.2013, 3:40
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
а как завязана с функцией usb_control_msg?
|
|
|
Текстовая версия | Сейчас: 30.1.2025, 5:21 |