Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Application.exe has triggered a breakpoint Visual Studio 2015 "C++" +PlugIn Qt 5.7

Application.exe has triggered a breakpoint Visual Studio 2015 "C++" +PlugIn Qt 5.7

Scheduled Pinned Locked Moved Unsolved German
13 Posts 2 Posters 4.1k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G Offline
    G Offline
    Galilio
    wrote on last edited by
    #1

    Hallo zusammen,

    ich habe eine Application in C++ (Visual Studio 2015 + Qt 5.7 PlugIn) geschrieben.
    Von diese App haben ich eine Release/Debug Version erstellt.

    Die Release Version läuft einwandfrei.
    Bei der Debug Version bekomme ich immer die oben genannten Fehler ".exe has triggered a breakpoint".
    Codemässig unterscheiden die beide Version nicht von einander.

    Meine Frage:
    Hat jemenden Erfahrungen mit solche Fehlermeldung?

    Gleiche Projekt läuft auch unter VS 2008 und Qt4.8 und da ist alles (Debug&Release) Okay

    Danke in voraus

    K 1 Reply Last reply
    0
    • G Galilio

      Hallo zusammen,

      ich habe eine Application in C++ (Visual Studio 2015 + Qt 5.7 PlugIn) geschrieben.
      Von diese App haben ich eine Release/Debug Version erstellt.

      Die Release Version läuft einwandfrei.
      Bei der Debug Version bekomme ich immer die oben genannten Fehler ".exe has triggered a breakpoint".
      Codemässig unterscheiden die beide Version nicht von einander.

      Meine Frage:
      Hat jemenden Erfahrungen mit solche Fehlermeldung?

      Gleiche Projekt läuft auch unter VS 2008 und Qt4.8 und da ist alles (Debug&Release) Okay

      Danke in voraus

      K Offline
      K Offline
      koahnig
      wrote on last edited by
      #2

      @Galilio

      Ist die Debug-Version dann im Debugger gestartet?

      Vote the answer(s) that helped you to solve your issue(s)

      G 1 Reply Last reply
      0
      • K koahnig

        @Galilio

        Ist die Debug-Version dann im Debugger gestartet?

        G Offline
        G Offline
        Galilio
        wrote on last edited by
        #3

        @koahnig said in Application.exe has triggered a breakpoint Visual Studio 2015 "C++" +PlugIn Qt 5.7:

        Ist die Debug-Version dann im Debugger gestartet?

        Ja

        1 Reply Last reply
        0
        • G Offline
          G Offline
          Galilio
          wrote on last edited by
          #4

          anbei einen Codeabschnitt, wo das Problem auftritt:
          Header File:

          class VisaAgilent: public QThread
          {
              public:
             
              typedef enum
              {
                  enRspTimeout = -2,
                  enRspOffline,
                  enRspOK,
                  enRspError
              } t_enRspType;
             
              VisaAgilent(QString strIpAdress_p, int iTimeout_p, bool boSimulate_p = false, bool boDebug_p = false);
              ~VisaAgilent();
              ...
              bool Open(const QString &strIpAdress_p, const int iTimeout_p);
              bool Close(const int iTimeout_p);
              t_enRspType Execute(const char *strCmd_p, const int iWaitResponse_p, const int iTimeout_p, const int iRspDelayed_p);
              ...
              protected:
              void run();
              private:
              QTcpSocket *m_pTcpSctCtrl;
          }
          

          cpp File:

          VisaAgilent::VisaAgilent(QString strIpAdress_p, int iTimeout_p, bool boSimulate_p, bool boDebug_p)
          {
           
             
              m_boDebug = boDebug_p;
              m_boSimulate = boSimulate_p;
           
              m_enRetVal = enRspOffline;
              m_strCtrlIP = QString("");
              m_iTimeout = 0;
              m_iTimeoutClose = iTimeout_p;
              if (this->Execute("CreateObject", 0, 0, 0) != enRspOK)
              {
                  throw(QString("TcpSocket Create memory error"));
              }
           
              this->Open(strIpAdress_p, iTimeout_p);
          }
           
          VisaAgilent::~VisaAgilent()
          {
              while(isRunning());
           
              this->Close(m_iTimeoutClose);
           
              while(isRunning());
             
          }
           
          bool VisaAgilent::Open(const QString &strCtrlIP_p, const int iTimeout_p)
          {
              bool boRet_l = true;
           
              m_strCtrlIP = strCtrlIP_p;
                 
              if (this->Execute("OpenConnection", 0, iTimeout_p, 0) != enRspOK)
              {
                  throw(QString("Open TcpSocket Open Connection error"));
              }
             
              if (m_boDebug)
              {
                  throw(QString("Tcp Socket is open"));
              }
           
              return boRet_l;
          }
           
          bool VisaAgilent::Close(const int iTimeout_p)
          {
              bool boRet_l = true;
           
              while(isRunning());
           
              if (this->Execute("CloseConnection", 500, iTimeout_p, 1000) != enRspOK)
              {
                  throw(QString("Close Connection error"));
              }
             
              if (m_boDebug)
              {
                  throw(QString("Tcp Socket is closed"));
              }
           
              while(isRunning());
           
              return boRet_l;
          }
           
          VisaAgilent::t_enRspType VisaAgilent::Execute(const char *strCmd_p, const int iWaitResponse_p, const int iTimeout_p, const int iRspDelayed_p)
          {
              VisaAgilent::t_enRspType enRetVal_l = enRspOffline;
           
              if (!isRunning())
              {
                  m_ByteArrayRead.clear();
           
                  m_ByteArrayWrite.clear();
                  m_ByteArrayWrite.append(strCmd_p);
                 
                  m_iWaitResponse = iWaitResponse_p;
                  m_iTimeout = iTimeout_p;
                  m_iResponseDelayed = iRspDelayed_p;
           
                  start(); // Thread Start
           
                  m_MtxProcess.lock();
                  m_WaitCondProcess.wait(&m_MtxProcess,-1);
                  m_MtxProcess.unlock();
             
                  enRetVal_l = this->m_enRetVal;
              }
              else
              {
                  enRetVal_l = enRspError;
              }
             
              while(isRunning());
             
              return enRetVal_l;
          }  
           
          void VisaAgilent::run()
          {
              bool boRun_l = true;
              bool boSent_l = false;
           
              const char *pStrCmd_l = NULL;
              const char *pStrRsp_l = NULL;
           
              m_enRetVal = enRspError;
           
              if (strcmp(m_ByteArrayWrite.data(),"CreateObject")==0)
              {
                  if (this->m_boSimulate == true)
                  {
                      m_enRetVal = enRspOK;
                  }
                  else
                  {
                      m_pTcpSctCtrl = (QTcpSocket *)new QTcpSocket;
                      if (m_pTcpSctCtrl != NULL)
                      {
                          m_enRetVal = enRspOK;
                      }
                  }
           
                  boRun_l = false;
              }
           
              if (strcmp(m_ByteArrayWrite.data(),"DeleteObject")==0)
              {
                  if (this->m_boSimulate == true)
                  {
                  }
                  else
                  {
                      if (m_pTcpSctCtrl != NULL)
                      {
                          delete m_pTcpSctCtrl;
                      }
                  }
           
                  m_enRetVal = enRspOK;
                  boRun_l = false;
              }
           
              if (strcmp(m_ByteArrayWrite.data(),"OpenConnection")==0)
              {
                  if (this->m_boSimulate == true)
                  {
                      m_enRetVal = enRspOK;
                  }
                  else
                  {
                      m_pTcpSctCtrl->connectToHost(m_strCtrlIP,5025);
                      if (m_pTcpSctCtrl->waitForConnected(m_iTimeout) == true)
                      {
                          m_enRetVal = enRspOK;
                      }
                  }
                 
                  boRun_l = false;
              }
           
              if (strcmp(m_ByteArrayWrite.data(),"CloseConnection")==0)
              {
                  if (this->m_boSimulate == true)
                  {
                      m_enRetVal = enRspOK;
                  }
                  else
                  {
                      m_pTcpSctCtrl->disconnectFromHost();
                      if ((m_pTcpSctCtrl->state() == QAbstractSocket::UnconnectedState) || (m_pTcpSctCtrl->waitForDisconnected(m_iTimeout)))
                      {
                          m_enRetVal = enRspOK;
                      }
                  }
                 
                  boRun_l = false;
              }
              .....
              }
          
          1 Reply Last reply
          0
          • G Offline
            G Offline
            Galilio
            wrote on last edited by
            #5

            Ich versuche hier wann und wie der oben genannten Fehler auftritt:
            ....
            Im laufe das Programm mache ich folgende:

            if(eine bestimmte Bedingung)
            {
                VisaAgilent reference(......);
                reference.ExecuteRUNControl(); // Task wird erfolgreich geschlossen
            }
            

            // wenn diesen Block "{}" verlassen wird, dann wird der Destruktor gerufen und der so ausieht:

             VisaAgilent::~VisaAgilent()
            {
                while(isRunning());
             
                this->Close(m_iTimeoutClose);
             
                while(isRunning());
               
                if (this->Execute("DeleteObject", 0, 0, 0) != enRspOK)
                {
                    throw(QString("Destructor TcpSocket Delete memory error"));
                }
             
               
                while(isRunning());
            }
            

            dieser widerum ruft der close Methode, die so ausieht:

             bool VisaAgilent::Close(const int iTimeout_p)
            {
                bool boRet_l = true;
             
                while(isRunning());
             
                if (this->Execute("CloseConnection", 500, iTimeout_p, 1000) != enRspOK)
                {
                    throw(QString("Close Connection error"));
                }
               
                if (m_boDebug)
                {
                    throw(QString("Tcp Socket is closed"));
                }
             
                while(isRunning());
             
                return boRet_l;
            }
            

            dieser ruft wieder

            Execute(...)
            

            Methode und genau in diesem Methode
            nach der

            start()
            

            Aufruf kracht die SW, da die

            run()
            

            Methode nicht aufgerufen wird was normaleweise nicht der Fall ist.
            also

             run()
            

            muss immer automatische nach dem Aufruf von

            start()
            

            folgen.

            K 1 Reply Last reply
            0
            • G Galilio

              Ich versuche hier wann und wie der oben genannten Fehler auftritt:
              ....
              Im laufe das Programm mache ich folgende:

              if(eine bestimmte Bedingung)
              {
                  VisaAgilent reference(......);
                  reference.ExecuteRUNControl(); // Task wird erfolgreich geschlossen
              }
              

              // wenn diesen Block "{}" verlassen wird, dann wird der Destruktor gerufen und der so ausieht:

               VisaAgilent::~VisaAgilent()
              {
                  while(isRunning());
               
                  this->Close(m_iTimeoutClose);
               
                  while(isRunning());
                 
                  if (this->Execute("DeleteObject", 0, 0, 0) != enRspOK)
                  {
                      throw(QString("Destructor TcpSocket Delete memory error"));
                  }
               
                 
                  while(isRunning());
              }
              

              dieser widerum ruft der close Methode, die so ausieht:

               bool VisaAgilent::Close(const int iTimeout_p)
              {
                  bool boRet_l = true;
               
                  while(isRunning());
               
                  if (this->Execute("CloseConnection", 500, iTimeout_p, 1000) != enRspOK)
                  {
                      throw(QString("Close Connection error"));
                  }
                 
                  if (m_boDebug)
                  {
                      throw(QString("Tcp Socket is closed"));
                  }
               
                  while(isRunning());
               
                  return boRet_l;
              }
              

              dieser ruft wieder

              Execute(...)
              

              Methode und genau in diesem Methode
              nach der

              start()
              

              Aufruf kracht die SW, da die

              run()
              

              Methode nicht aufgerufen wird was normaleweise nicht der Fall ist.
              also

               run()
              

              muss immer automatische nach dem Aufruf von

              start()
              

              folgen.

              K Offline
              K Offline
              koahnig
              wrote on last edited by
              #6

              @Galilio

              Ich kann dir hier nicht wirklich helfen, da ich MinGW verwende.

              Das Einzige, was ich mir vorstellen kann, wären "Ghost break points". Diese treten bei mir unter MinGW mit GDB regelmässig auf. Diese Break-Points sind nicht markiert als solche, aber wenn man versucht einen Break-Point dort zu setzen, muss man das zweimal machen. beim ersten Mal wird der Break-Point erst zurückgesetzt. Es ist also eine reine Anzeigesache.

              Ein anderes Problem habe ich beim Umschalten von Release- auf Debug-Modus. Das passt dann nicht automatisch zusammen und muss qmake nochmals laufen lassen. Keine Ahnung ob dies auf dein Problem anwendbar ist. Aber schaden sollte es nicht nochmals "run qmake" und anschliessend ein rebuild.

              Vote the answer(s) that helped you to solve your issue(s)

              1 Reply Last reply
              0
              • G Offline
                G Offline
                Galilio
                wrote on last edited by
                #7

                Hi,
                ich glaube ich bin auf eine heisse Spur.
                Der Thread wird irgendwie nicht richtig aufgeraumt und das ist glaube ich das Problem.

                Dazu habe ich eine technische Frage:
                Sei folgende:
                Header File:

                QTcpSocket *m_pTcpSctCtrl;	
                

                Cpp File:

                m_pTcpSctCtrl = (QTcpSocket *)new QTcpSocket;
                

                Darf ich so schreiben?
                danke

                K 1 Reply Last reply
                0
                • G Galilio

                  Hi,
                  ich glaube ich bin auf eine heisse Spur.
                  Der Thread wird irgendwie nicht richtig aufgeraumt und das ist glaube ich das Problem.

                  Dazu habe ich eine technische Frage:
                  Sei folgende:
                  Header File:

                  QTcpSocket *m_pTcpSctCtrl;	
                  

                  Cpp File:

                  m_pTcpSctCtrl = (QTcpSocket *)new QTcpSocket;
                  

                  Darf ich so schreiben?
                  danke

                  K Offline
                  K Offline
                  koahnig
                  wrote on last edited by
                  #8

                  @Galilio said in Application.exe has triggered a breakpoint Visual Studio 2015 "C++" +PlugIn Qt 5.7:

                  Cpp File:
                  m_pTcpSctCtrl = (QTcpSocket *)new QTcpSocket;

                  Darf ich so schreiben?

                  Ich bin mir nicht ob du "dürfen" hier richtig anwendest. Bei "dürfen" und "müssen" gibt es zum Beispiel zwischen Englisch und Deutsch doch entscheidende Unterschiede, die zu Ungereimtheiten zwischen Muttersprachler und Nichtmuttersprachler führen.

                  Du darfst schon, aber warum? Es sollte/muss auch ohne den cast funktionieren. Der wäre nur bei einer vererbten Klasse notwendig.

                  Vote the answer(s) that helped you to solve your issue(s)

                  1 Reply Last reply
                  1
                  • G Offline
                    G Offline
                    Galilio
                    wrote on last edited by
                    #9

                    Hi Zusammen,

                    Kann es sein, dass der Qt 5.7 einen Bug hat bzw. in der

                    QTcpSocket 
                    

                    ?

                    Danke in voraus

                    K 1 Reply Last reply
                    0
                    • G Galilio

                      Hi Zusammen,

                      Kann es sein, dass der Qt 5.7 einen Bug hat bzw. in der

                      QTcpSocket 
                      

                      ?

                      Danke in voraus

                      K Offline
                      K Offline
                      koahnig
                      wrote on last edited by
                      #10

                      @Galilio

                      Es wäre besser für jeden neuen Fall einen neuen Thread zu starten.

                      Ich denke Fehler kann man nie ausschliessen. Allerdings solltest du mehr Details geben. So kann es niemand einstufen und dir eine richtige Antwort geben.

                      Falls du nach einem Bug schauen möchtest, solltest du bei JIRA nachschauen. Dort sind alle bekannten Bugs eingetragen.

                      Vote the answer(s) that helped you to solve your issue(s)

                      1 Reply Last reply
                      0
                      • G Offline
                        G Offline
                        Galilio
                        wrote on last edited by
                        #11

                        Eine Release Version läuft immer noch einwandfrei.
                        Problem tritt nur bei Debug Version.

                        Ich habe auch das gleiche Projekt unter Visual Studio 2008 mit Qt 4.8 Plugin und dort laufen beide Versionen Debug und Release einwandfrei.

                        K 1 Reply Last reply
                        0
                        • G Galilio

                          Eine Release Version läuft immer noch einwandfrei.
                          Problem tritt nur bei Debug Version.

                          Ich habe auch das gleiche Projekt unter Visual Studio 2008 mit Qt 4.8 Plugin und dort laufen beide Versionen Debug und Release einwandfrei.

                          K Offline
                          K Offline
                          koahnig
                          wrote on last edited by
                          #12

                          @Galilio

                          Wenn das Problem nur unter debug mit Qt 5.7 nicht richtig läuft aber als release Version richtig läuft, ist es sehr wahrscheinlich kein Bug bei Qt 5.7.

                          Vote the answer(s) that helped you to solve your issue(s)

                          G 1 Reply Last reply
                          0
                          • K koahnig

                            @Galilio

                            Wenn das Problem nur unter debug mit Qt 5.7 nicht richtig läuft aber als release Version richtig läuft, ist es sehr wahrscheinlich kein Bug bei Qt 5.7.

                            G Offline
                            G Offline
                            Galilio
                            wrote on last edited by
                            #13

                            @koahnig
                            Ja das denke ich auch aber ich habe ehrlich gesagt kein Plan.
                            Mir ist immer noch unklar warum nur beim Debug Version das problem ist.
                            Genau gesagt beim TCP

                            1 Reply Last reply
                            0

                            • Login

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • Categories
                            • Recent
                            • Tags
                            • Popular
                            • Users
                            • Groups
                            • Search
                            • Get Qt Extensions
                            • Unsolved