процесс GDB неожиданно завершился (код выхода 3)

я кодирую в Qt 5.7 на win 7. мое приложение работает правильно. но когда я использую отладчик, появляется диалоговое окно с ошибкой: процесс GDB неожиданно завершился (код выхода 3). последняя часть журнала отладчика:

>~"../../../../src/gdb-7.10.1/gdb/utils.c:1071: internal-error: virtual memory exhausted.\nA problem internal to GDB has been detected,\nfurther debugging may prove unreliable.\nCreate a core file of GDB? "
>~"(y or n) [answered Y; input not from terminal]\n"
dUNEXPECTED GDB STDERR: 
dThis application has requested the Runtime to terminate it in an unusual way.
dPlease contact the application's support team for more information.

dGDB PROCESS FINISHED, status 0, exit code 3
dNOTE: ENGINE ILL ******
dFORWARDING STATE TO InferiorShutdownFailed
dState changed BY FORCE from InferiorStopOk(14) to InferiorShutdownFailed(17) [master]
dState changed from InferiorShutdownFailed(17) to EngineShutdownRequested(19) [master]
dQUEUE: SHUTDOWN ENGINE
dCALL: SHUTDOWN ENGINE
dPLAIN ADAPTER SHUTDOWN 19
dINITIATE GDBENGINE SHUTDOWN IN STATE 14, PROC: 0
dNOTE: ENGINE SHUTDOWN OK
dState changed from EngineShutdownRequested(19) to EngineShutdownOk(21) [master]
dState changed from EngineShutdownOk(21) to DebuggerFinished(22) [master]
dQUEUE: FINISH DEBUGGER
dNOTE: FINISH DEBUGGER
dHANDLE RUNCONTROL FINISHED
sDebugger finished.

в части моего кода я использовал QVector:

       int logic_points_number=5;
       int logic_input_points[16][logic_points_number] ;
       QVector<double> x1_1(2*logic_points_number);
       QVector<double> y1_1(32*logic_points_number);

       x1_position=x1_last_position_logic;//start from last drawn point
       for(int logic_channel=0;logic_channel<16;logic_channel++){
          for (int i=0;i<logic_points_number ;i++){
          if (logic_channel==0)// set x1_1 only for first channel
            x1_1[2*i]= x1_position;
         y1_1[(2*logic_channel*logic_points_number)+(2*i)]=(16.2-logic_channel)+(0.6*logic_input_points[logic_channel][i]);
         if (logic_channel==0){// set x1_1 and x1_position only for first channel
            x1_position = x1_position + x1_step_logic;
            x1_1[(2*i)+1]= x1_position;
          }
         y1_1[(2*logic_channel*logic_points_number)+(2*i)+1]=(16.2-logic_channel)+(0.6*logic_input_points[logic_channel][i]);
         }
       }
       x1_last_position_logic= x1_position;//Set new last drawn point
}

на ходу проблем нет. когда я удаляю приведенный выше код, в отладчике нет проблем. в гугле нет полезного ответа. что мне делать? Благодарность


person javad    schedule 15.02.2017    source источник
comment
gdb получил ошибку internal-error: virtual memory exhausted.. Либо вся ваша система исчерпала виртуальную память (но Windows заранее предупредила бы вас об этом), либо gdb работает с некоторыми ограничениями для каждого процесса, как описано в PerfGuide: виртуальная память вне процесса. Возможно, у вас есть 32-битный gdb. Откуда вы скачали gdb?   -  person Mark Plotnick    schedule 15.02.2017
comment
я не знаю, что такое виртуальная память?! но я проверил оперативную память из диспетчера задач, и она составляет 45% на максимуме. мой отладчик 32-битный (MinGW_32bit-Debug), который загружен с пакетом Qt с веб-сайта Qt.   -  person javad    schedule 16.02.2017
comment
РЕШЕНО путем установки mingw-w64 из: [netix.dl.sourceforge.net/project/mingw-w64/   -  person javad    schedule 19.02.2017
comment
Спасибо, я протестирую это решение, но знаете ли вы, почему это происходит?   -  person Mohamed Amine Ouali    schedule 24.02.2017


Ответы (1)


В моем случае код ошибки был «неожиданно завершен процесс cdb (код -805306181)». Изменение отладчика с 32-битного отладчика приложений на 64-битный отладчик приложений устранило эту проблему.

person Davit Kalantaryan    schedule 23.04.2019
comment
У меня уже есть QT 5,14,2 MinGW 64 бит, но я столкнулся с той же проблемой - person Imran; 17.08.2020
comment
В Windows мой опыт только с компилятором Microsoft. Для MinGW, я думаю, следует использовать GNU gdb XY для MinGW M.M.Q 64bit (вторая строка в списке отладчиков) - person Davit Kalantaryan; 03.02.2021