Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Qt 6.3.1 painful....
Forum Updated to NodeBB v4.3 + New Features

Qt 6.3.1 painful....

Scheduled Pinned Locked Moved Unsolved General and Desktop
31 Posts 5 Posters 7.6k Views 2 Watching
  • 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.
  • SPlattenS Offline
    SPlattenS Offline
    SPlatten
    wrote on last edited by SPlatten
    #19

    I'm not sure I am winning this battle Qt 6.3.1 on my MacBook Pro Apple M1 is not going anywhere fast.

    My application is multi-threaded, when I run the application it is halting in (__pthread_kill) showing a window containing nothing but hex, the stack trade showing in Test Results panel contains:

                                                                                                                                                                                                                                        
                                                                                                                                                                                                                                        
    1  __pthread_kill                                                                                                               (arm64e) /usr/lib/system/libsystem_kernel.dylib                                         0x185b2ed98 
    2  pthread_kill                                                                                                                 (arm64e) /usr/lib/system/libsystem_pthread.dylib                                        0x185b63ee0 
    3  abort                                                                                                                        (arm64e) /usr/lib/system/libsystem_c.dylib                                              0x185a9e340 
    4  malloc_vreport                                                                                                               (arm64e) /usr/lib/system/libsystem_malloc.dylib                                         0x1859808c0 
    5  malloc_zone_error                                                                                                            (arm64e) /usr/lib/system/libsystem_malloc.dylib                                         0x185995c84 
    6  nanov2_allocate_from_block                                                                                                   (arm64e) /usr/lib/system/libsystem_malloc.dylib                                         0x185972bc4 
    7  nanov2_allocate                                                                                                              (arm64e) /usr/lib/system/libsystem_malloc.dylib                                         0x1859721e0 
    8  nanov2_calloc                                                                                                                (arm64e) /usr/lib/system/libsystem_malloc.dylib                                         0x18597437c 
    9  _malloc_zone_calloc                                                                                                          (arm64e) /usr/lib/system/libsystem_malloc.dylib                                         0x18598f840 
    10 class_createInstance                                                                                                         (arm64e) /usr/lib/libobjc.A.dylib                                                       0x1859ea404 
    11 _os_object_alloc_realized                                                                                                    (arm64e) /usr/lib/system/libdispatch.dylib                                              0x18599f568 
    12 _xpc_dictionary_deserialize                                                                                                  (arm64e) /usr/lib/system/libxpc.dylib                                                   0x1858982d0 
    13 _xpc_array_deserialize                                                                                                       (arm64e) /usr/lib/system/libxpc.dylib                                                   0x1858981ec 
    14 _xpc_dictionary_unpack_value                                                                                                 (arm64e) /usr/lib/system/libxpc.dylib                                                   0x185893fc0 
    15 _xpc_dictionary_unpack_value_and_vend                                                                                        (arm64e) /usr/lib/system/libxpc.dylib                                                   0x185895424 
    16 _xpc_dictionary_look_up                                                                                                      (arm64e) /usr/lib/system/libxpc.dylib                                                   0x18588fe8c 
    17 -[CFPrefsSearchListSource handleReply:toRequestNewDataMessage:onConnection:retryCount:error:]                                (arm64e) /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation  0x185be46a4 
    18 __80-[CFPrefsSearchListSource alreadylocked_generationCountFromListOfSources:count:]_block_invoke                            (arm64e) /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation  0x185be45a8 
    19 __104-[CFPrefsSearchListSource synchronouslySendDaemonMessage:andAgentMessage:andDirectMessage:replyHandler:]_block_invoke_2 (arm64e) /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation  0x185be4540 
    20 -[_CFXPreferences withConnectionForRole:performBlock:]                                                                       (arm64e) /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation  0x185be4100 
    21 __104-[CFPrefsSearchListSource synchronouslySendDaemonMessage:andAgentMessage:andDirectMessage:replyHandler:]_block_invoke   (arm64e) /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation  0x185be40a4 
    22 _dispatch_client_callout2                                                                                                    (arm64e) /usr/lib/system/libdispatch.dylib                                              0x1859a01f4 
    23 _dispatch_apply_invoke                                                                                                       (arm64e) /usr/lib/system/libdispatch.dylib                                              0x1859b3954 
    24 _dispatch_client_callout                                                                                                     (arm64e) /usr/lib/system/libdispatch.dylib                                              0x1859a01b4 
    25 _dispatch_root_queue_drain                                                                                                   (arm64e) /usr/lib/system/libdispatch.dylib                                              0x1859b1a04 
    26 _dispatch_worker_thread2                                                                                                     (arm64e) /usr/lib/system/libdispatch.dylib                                              0x1859b2104 
    27 _pthread_wqthread                                                                                                            (arm64e) /usr/lib/system/libsystem_pthread.dylib                                        0x185b60324 
    
    

    Kind Regards,
    Sy

    1 Reply Last reply
    0
    • JoeCFDJ Offline
      JoeCFDJ Offline
      JoeCFD
      wrote on last edited by
      #20

      I guess you are able to use c++20 now. Adding logging code into your threads may enable you to find issues more quickly.
      https://mariusbancila.ro/blog/2021/07/03/writing-a-simple-logging-function-in-c20/

      D 1 Reply Last reply
      0
      • JoeCFDJ JoeCFD

        I guess you are able to use c++20 now. Adding logging code into your threads may enable you to find issues more quickly.
        https://mariusbancila.ro/blog/2021/07/03/writing-a-simple-logging-function-in-c20/

        D Offline
        D Offline
        DerReisende
        wrote on last edited by
        #21

        @JoeCFD You don't need c++20 to do that, QMessageLogContext does give you the same information if you install a proper message handler:

        static void qt_message_handler(QtMsgType type, [[maybe_unused]] const QMessageLogContext &context, const QString &msg) {
            const QByteArray localMsg = msg.toLocal8Bit();
        #ifdef NDEBUG
            const auto out_msg = fmt::format("\t{}", localMsg.constData());
        #else
            const char *function = context.function ? context.function : "";
            const auto out_msg = fmt::format("\t{} [LINE:{}, {}]",
                                              localMsg.constData(),
                                              context.line,
                                              function);
        #endif
            switch (type) {
                case QtDebugMsg:
                    spdlog::debug(out_msg);
                    break;
                case QtInfoMsg:
                    spdlog::info(out_msg);
                    break;
                case QtWarningMsg:
                    spdlog::warn(out_msg);
                    break;
                case QtCriticalMsg:
                    spdlog::error(out_msg);
                    break;
                case QtFatalMsg:
                    spdlog::critical(out_msg);
                    spdlog::shutdown();
                    break;
            }
        }
        
        void init_logging() {
            init_spdlog();
        
            qInstallMessageHandler(qt_message_handler);
        } 
        

        I am using spdlog and fmt::format for logging and formatting but in the end you will get almost the same details for all Qt logging calls as with your example.

        SPlattenS JoeCFDJ 2 Replies Last reply
        0
        • D DerReisende

          @JoeCFD You don't need c++20 to do that, QMessageLogContext does give you the same information if you install a proper message handler:

          static void qt_message_handler(QtMsgType type, [[maybe_unused]] const QMessageLogContext &context, const QString &msg) {
              const QByteArray localMsg = msg.toLocal8Bit();
          #ifdef NDEBUG
              const auto out_msg = fmt::format("\t{}", localMsg.constData());
          #else
              const char *function = context.function ? context.function : "";
              const auto out_msg = fmt::format("\t{} [LINE:{}, {}]",
                                                localMsg.constData(),
                                                context.line,
                                                function);
          #endif
              switch (type) {
                  case QtDebugMsg:
                      spdlog::debug(out_msg);
                      break;
                  case QtInfoMsg:
                      spdlog::info(out_msg);
                      break;
                  case QtWarningMsg:
                      spdlog::warn(out_msg);
                      break;
                  case QtCriticalMsg:
                      spdlog::error(out_msg);
                      break;
                  case QtFatalMsg:
                      spdlog::critical(out_msg);
                      spdlog::shutdown();
                      break;
              }
          }
          
          void init_logging() {
              init_spdlog();
          
              qInstallMessageHandler(qt_message_handler);
          } 
          

          I am using spdlog and fmt::format for logging and formatting but in the end you will get almost the same details for all Qt logging calls as with your example.

          SPlattenS Offline
          SPlattenS Offline
          SPlatten
          wrote on last edited by SPlatten
          #22

          @DerReisende , thank you, I've done this already for several years, here is the output to my log file:

          XMLMPAM start-up
          Listening to any local IP address on port: 8123
          S000000000003E000000000374T09:56:43.345T:DL00004842P../clsMainWnd.cpp[void clsXMLnode::update]
          "Node:label ID:lbl1 X:12 Y:261 W:100 H:30 Text:<a href=\"http://google.com\" style=\"color:#000000;text-decoration:none;\">Google</a>:"
          S000000000004E000000000407T09:56:43.378T:DL00003985P../clsMainWnd.cpp[static clsXMLnode *clsXMLnode::spobjParse]
          "label"
          S000000000005E000000000408T09:56:43.379T:DL00004842P../clsMainWnd.cpp[void clsXMLnode::update]
          "Node:label ID:lbl1 X:12 Y:261 W:100 H:30 Text:<a href=\"http://google.com\" style=\"color:#000000;text-decoration:none;\">Google</a>:"
          S000000000006E000000000408T09:56:43.379T:D:"Node:label ID:lbl1 X:12 Y:261 W:100 H:30 Text:<a href=\"http://google.com\" style=\"color:#000000;text-decoration:none;\">Google</a>:"
          S000000000007E000000007037T09:56:50.008T:DL00000798P../clsMainWnd.cpp[clsXMLnode::clsXMLnode]
          "test99"
          S000000000008E000000007037T09:56:50.008T:DL00003985P../clsMainWnd.cpp[static clsXMLnode *clsXMLnode::spobjParse]
          "label"
          S000000000009E000000007104T09:56:50.075T:D:"label"
          S000000000010E000000007113T09:56:50.084T:D:"label"
          S000000000011E000000007128T09:56:50.099T:D:"label"
          Process:  Arg[0]: 8123
          Process:  Arg[1]: 8124
          Process:  Arg[2]: 24150
          Process:  Arg[3]: f1
          Process is NOT running, launching
          S000000000014E000000007171T09:56:50.142T:DL00000553P../clsModule.cpp[void clsModule::setProgram]
          Starting: f1:mdFIO
          Registering decoder for file simon.js, function: blnDecodeFIOcmd
          Process:  Arg[0]: 8123
          Process:  Arg[1]: 8125
          Process:  Arg[2]: 24150
          Process:  Arg[3]: s1
          Process is NOT running, launching
          S000000000018E000000007177T09:56:50.148T:D:Starting: s1:mdSQL
          Registering decoder for file simon.js, function: blnDecodeSQLcmd
          Process:  Arg[0]: 8123
          Process:  Arg[1]: 8126
          Process:  Arg[2]: 24150
          Process:  Arg[3]: x1
          Process is NOT running, launching
          S000000000022E000000007182T09:56:50.153T:D:Starting: x1:mdXML
          Registering decoder for file simon.js, function: blnDecodeXMLcmd
          S000000000024E000000007234T09:56:50.205T:DL00000571P../clsModule.cpp[auto clsModule::setProgram]
          PID for mdXML: 24171, On port: 8123
          Process:  mdXML started
          S000000000026E000000007234T09:56:50.205T:D:PID for mdFIO: 24165, On port: 8123
          Process:  mdFIO started
          S000000000028E000000007234T09:56:50.205T:D:PID for mdSQL: 24168, On port: 8123
          Process:  mdSQL started
          Client connecting...
          Client connecting...
          Client connecting...
          Client connected
          Client connected
          Client connected
          !s1!Client connecting...
          !s1!Client connected
          !f1!Client connecting...
          !f1!Client connected
          !x1!Client connecting...
          !x1!Client connected
          !f1!S000000000042E000000000131T09:56:50.347DL00000731F../mdFIO/clsModFIO.cpp[void clsModFIO::doComm
          !f1!S000000000042E000000000131T09:56:50.347DL00000731F../mdFIO/clsModFIO.cpp[void clsModFIO::doCommand]
          2022-08-17 08:56:50,  Command#1: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000043E000000000131T09:56:50.347D:Length
          !f1!S000000000043E000000000131T09:56:50.347D:Length: 1
          !f1!S000000000044E000000000131T09:56:50.347D:2022-08
          !f1!S000000000044E000000000131T09:56:50.347D:2022-08-17 08:56:50,  Command#2: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000045E000000000131T09:56:50.347D:Length
          !f1!S000000000045E000000000131T09:56:50.347D:Length: 2
          !f1!S000000000046E000000000131T09:56:50.347D:2022-08
          !f1!S000000000046E000000000131T09:56:50.347D:2022-08-17 08:56:50,  Command#3: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000047E000000000131T09:56:50.347D:Length
          !f1!S000000000047E000000000131T09:56:50.347D:Length: 4
          !f1!S000000000048E000000000131T09:56:50.348D:2022-08
          !f1!S000000000048E000000000131T09:56:50.348D:2022-08-17 08:56:50,  Command#4: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000049E000000000131T09:56:50.348D:Length
          !f1!S000000000049E000000000131T09:56:50.348D:Length: 8
          !f1!S000000000050E000000000131T09:56:50.348D:2022-08
          !f1!S000000000050E000000000131T09:56:50.348D:2022-08-17 08:56:50,  Command#5: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000051E000000000131T09:56:50.348D:Length
          !f1!S000000000051E000000000131T09:56:50.348D:Length: 4
          !f1!S000000000052E000000000131T09:56:50.348D:2022-08
          !f1!S000000000052E000000000131T09:56:50.348D:2022-08-17 08:56:50,  Command#6: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000053E000000000131T09:56:50.348D:Length
          !f1!S000000000053E000000000131T09:56:50.348D:Length: 8
          !f1!S000000000054E000000000132T09:56:50.348D:2022-08
          !f1!S000000000054E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#7: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000055E000000000132T09:56:50.348D:Length
          !f1!S000000000055E000000000132T09:56:50.348D:Length: 27
          !f1!S000000000056E000000000132T09:56:50.348D:2022-08
          !f1!S000000000056E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#8: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000057E000000000132T09:56:50.348D:Length
          !f1!S000000000057E000000000132T09:56:50.348D:Length: 1
          !f1!S000000000058E000000000132T09:56:50.348D:2022-08
          !f1!S000000000058E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#9: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000059E000000000132T09:56:50.348D:Length
          !f1!S000000000059E000000000132T09:56:50.348D:Length: 2
          !f1!S000000000060E000000000132T09:56:50.348D:2022-08
          !f1!S000000000060E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#10: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000061E000000000132T09:56:50.348D:Length
          !f1!S000000000061E000000000132T09:56:50.348D:Length: 4
          !f1!S000000000062E000000000132T09:56:50.348D:2022-08
          !f1!S000000000062E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#11: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000063E000000000132T09:56:50.348D:Length
          !f1!S000000000063E000000000132T09:56:50.348D:Length: 8
          !f1!S000000000064E000000000132T09:56:50.348D:2022-08
          !f1!S000000000064E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#12: find, File: /Users/sy/XMLMPAM/config/test.dat, Mode: r
          !f1!S000000000065E000000000132T09:56:50.348D:Length
          !f1!S000000000065E000000000132T09:56:50.348D:Length: 18446744073709551615
          !f1!S000000000066E000000000132T09:56:50.349D:2022-08
          !f1!S000000000066E000000000132T09:56:50.349D:2022-08-17 08:56:50,  Command#13: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rt
          !f1!S000000000067E000000000132T09:56:50.349D:Length
          !f1!S000000000067E000000000132T09:56:50.349D:Length: 3
          !f1!S000000000068E000000000132T09:56:50.349D:2022-08
          !f1!S000000000068E000000000132T09:56:50.349D:2022-08-17 08:56:50,  Command#14: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rt
          !f1!S000000000069E000000000132T09:56:50.349D:Length
          !f1!S000000000069E000000000132T09:56:50.349D:Length: 4
          !f1!S000000000070E000000000132T09:56:50.349D:2022-08
          !f1!S000000000070E000000000132T09:56:50.349D:2022-08-17 08:56:50,  Command#15: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rt
          !f1!S000000000071E000000000132T09:56:50.349D:Positio
          !f1!S000000000071E000000000132T09:56:50.349D:Position: -15
          !f1!S000000000072E000000000133T09:56:50.349D:Length
          !f1!S000000000072E000000000133T09:56:50.349D:Length: 5
          !f1!S000000000073E000000000133T09:56:50.349D:2022-08
          !f1!S000000000073E000000000133T09:56:50.349D:2022-08-17 08:56:50,  Command#16: tell, File: /Users/sy/XMLMPAM/config/test.dat, Mode: r
          !f1!S000000000074E000000000133T09:56:50.349D:Length
          !f1!S000000000074E000000000133T09:56:50.349D:Length: 18446744073709551615
          !s1!S000000000008E000000000137T09:56:50.343DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000008E000000000137T09:56:50.343DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"command":"connect","params":{"database":"test","driver":"QMYSQL","host":"localhost","pass":"resuocra","usr":"root"}}
          !s1!S000000000009E000000000179T09:56:50.384DL00000212F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000009E000000000179T09:56:50.384DL00000212F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"command":"connect","output":"connected"}
          S000000000036E000000007753T09:56:50.724T:W:QObject: Cannot create children for a parent that is in a different thread.
          (Parent is QNativeSocketEngine(0x600000012910), parent's thread is clsServer(0x600000257fc0), current thread is clsThread(0x600002c2a000)
          !s1!S000000000010E000000000519T09:56:50.724DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000010E000000000519T09:56:50.724DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm LIMIT ?;"}
          !s1!S000000000011E000000000521T09:56:50.726DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000011E000000000521T09:56:50.726DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"command":"query","handler":"simon2.js@testFormHandler","output":"connected","records":[{"intEmployed":"1","intPri":"1","vcAddress":"Latona House\nStation Road\nCantley\nNorfolk\nNR13 3SQ","vcFirstName":"Simon","vcSex":"Male","vcSurName":"Platten"},{"intEmployed":"1","intPri":"2","vcAddress":"Latona House\nStation Road\nCantley\nNorfolk\nNR13 3SQ","vcFirstName":"Susan","vcSex":"Female","vcSurName":"Platten"}]}
          !s1!S000000000012E000000000781T09:56:50.987DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000012E000000000781T09:56:50.987DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"}
          !s1!S000000000013E000000000782T09:56:50.987DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000013E000000000782T09:56:50.987DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"}
          !s1!S000000000014E000000001044T09:56:51.249DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000014E000000001044T09:56:51.249DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"}
          !s1!S000000000015E000000001044T09:56:51.249DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000015E000000001044T09:56:51.249DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"}
          !s1!S000000000016E000000001304T09:56:51.510DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000016E000000001304T09:56:51.510DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"}
          !s1!S000000000017E000000001305T09:56:51.510DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000017E000000001305T09:56:51.510DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"}
          !s1!S000000000018E000000001562T09:56:51.767DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000018E000000001562T09:56:51.767DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"}
          !s1!S000000000019E000000001562T09:56:51.768DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000019E000000001562T09:56:51.768DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"}
          !s1!S000000000020E000000001812T09:56:52.017DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000020E000000001812T09:56:52.017DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"}
          !s1!S000000000021E000000001812T09:56:52.017DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000021E000000001812T09:56:52.017DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"}
          S000000000037E000000009157T09:56:52.128T:W:QObject: Cannot create children for a parent that is in a different thread.
          (Parent is QNativeSocketEngine(0x600000025290), parent's thread is clsServer(0x600000255400), current thread is clsThread(0x600002c2a000)
          S000000000038E000000009158T09:56:52.129T:W:QObject: Cannot create children for a parent that is in a different thread.
          (Parent is QNativeSocketEngine(0x6000000196e0), parent's thread is clsServer(0x600000256f60), current thread is clsThread(0x600002c2a000)
          

          Where:
          S is the sequence number
          E is the elapsed time
          T is the time stamp
          T:C Type:Critical warning
          T:D Type:Debug message
          T:F Type:Fatal error
          T:W Type:Warning
          L is the line number
          P is the path and file name

          This is what is shown in the Application Output which suggests the issue is generated during the initialisation of QApplication.

          
          10:04:03: Debugging /Users/sy/XMLMPAM/build-XMLMPAM-Desktop_Qt_5_15_2_clang_64bit-Debug/XMLMPAM.app/Contents/MacOS/XMLMPAM ~/XMLMPAM/config/xmlmpam ...
          
          got fallback qt version 0x50f02
          2022-08-17 10:04:08.921420+0100 XMLMPAM[24714:211122] SecTaskLoadEntitlements failed error=22 cs_flags=20, pid=24714
          2022-08-17 10:04:08.921503+0100 XMLMPAM[24714:211122] SecTaskCopyDebugDescription: XMLMPAM[24714]/0#-1 LF=0
          2022-08-17 10:04:09.414338+0100 XMLMPAM[24714:211122] SecTaskLoadEntitlements failed error=22 cs_flags=20, pid=24714
          2022-08-17 10:04:09.414418+0100 XMLMPAM[24714:211122] SecTaskCopyDebugDescription: XMLMPAM[24714]/0#-1 LF=0
          

          Found this:
          https://apple.stackexchange.com/questions/237465/what-means-sectaskloadentlitlements-failed-error-22

          Kind Regards,
          Sy

          D 1 Reply Last reply
          0
          • D DerReisende

            @JoeCFD You don't need c++20 to do that, QMessageLogContext does give you the same information if you install a proper message handler:

            static void qt_message_handler(QtMsgType type, [[maybe_unused]] const QMessageLogContext &context, const QString &msg) {
                const QByteArray localMsg = msg.toLocal8Bit();
            #ifdef NDEBUG
                const auto out_msg = fmt::format("\t{}", localMsg.constData());
            #else
                const char *function = context.function ? context.function : "";
                const auto out_msg = fmt::format("\t{} [LINE:{}, {}]",
                                                  localMsg.constData(),
                                                  context.line,
                                                  function);
            #endif
                switch (type) {
                    case QtDebugMsg:
                        spdlog::debug(out_msg);
                        break;
                    case QtInfoMsg:
                        spdlog::info(out_msg);
                        break;
                    case QtWarningMsg:
                        spdlog::warn(out_msg);
                        break;
                    case QtCriticalMsg:
                        spdlog::error(out_msg);
                        break;
                    case QtFatalMsg:
                        spdlog::critical(out_msg);
                        spdlog::shutdown();
                        break;
                }
            }
            
            void init_logging() {
                init_spdlog();
            
                qInstallMessageHandler(qt_message_handler);
            } 
            

            I am using spdlog and fmt::format for logging and formatting but in the end you will get almost the same details for all Qt logging calls as with your example.

            JoeCFDJ Offline
            JoeCFDJ Offline
            JoeCFD
            wrote on last edited by
            #23

            @DerReisende the log function in C++ 20 seems simpler. I use both spdlog and Qt logger.

            D 1 Reply Last reply
            0
            • SPlattenS SPlatten

              @DerReisende , thank you, I've done this already for several years, here is the output to my log file:

              XMLMPAM start-up
              Listening to any local IP address on port: 8123
              S000000000003E000000000374T09:56:43.345T:DL00004842P../clsMainWnd.cpp[void clsXMLnode::update]
              "Node:label ID:lbl1 X:12 Y:261 W:100 H:30 Text:<a href=\"http://google.com\" style=\"color:#000000;text-decoration:none;\">Google</a>:"
              S000000000004E000000000407T09:56:43.378T:DL00003985P../clsMainWnd.cpp[static clsXMLnode *clsXMLnode::spobjParse]
              "label"
              S000000000005E000000000408T09:56:43.379T:DL00004842P../clsMainWnd.cpp[void clsXMLnode::update]
              "Node:label ID:lbl1 X:12 Y:261 W:100 H:30 Text:<a href=\"http://google.com\" style=\"color:#000000;text-decoration:none;\">Google</a>:"
              S000000000006E000000000408T09:56:43.379T:D:"Node:label ID:lbl1 X:12 Y:261 W:100 H:30 Text:<a href=\"http://google.com\" style=\"color:#000000;text-decoration:none;\">Google</a>:"
              S000000000007E000000007037T09:56:50.008T:DL00000798P../clsMainWnd.cpp[clsXMLnode::clsXMLnode]
              "test99"
              S000000000008E000000007037T09:56:50.008T:DL00003985P../clsMainWnd.cpp[static clsXMLnode *clsXMLnode::spobjParse]
              "label"
              S000000000009E000000007104T09:56:50.075T:D:"label"
              S000000000010E000000007113T09:56:50.084T:D:"label"
              S000000000011E000000007128T09:56:50.099T:D:"label"
              Process:  Arg[0]: 8123
              Process:  Arg[1]: 8124
              Process:  Arg[2]: 24150
              Process:  Arg[3]: f1
              Process is NOT running, launching
              S000000000014E000000007171T09:56:50.142T:DL00000553P../clsModule.cpp[void clsModule::setProgram]
              Starting: f1:mdFIO
              Registering decoder for file simon.js, function: blnDecodeFIOcmd
              Process:  Arg[0]: 8123
              Process:  Arg[1]: 8125
              Process:  Arg[2]: 24150
              Process:  Arg[3]: s1
              Process is NOT running, launching
              S000000000018E000000007177T09:56:50.148T:D:Starting: s1:mdSQL
              Registering decoder for file simon.js, function: blnDecodeSQLcmd
              Process:  Arg[0]: 8123
              Process:  Arg[1]: 8126
              Process:  Arg[2]: 24150
              Process:  Arg[3]: x1
              Process is NOT running, launching
              S000000000022E000000007182T09:56:50.153T:D:Starting: x1:mdXML
              Registering decoder for file simon.js, function: blnDecodeXMLcmd
              S000000000024E000000007234T09:56:50.205T:DL00000571P../clsModule.cpp[auto clsModule::setProgram]
              PID for mdXML: 24171, On port: 8123
              Process:  mdXML started
              S000000000026E000000007234T09:56:50.205T:D:PID for mdFIO: 24165, On port: 8123
              Process:  mdFIO started
              S000000000028E000000007234T09:56:50.205T:D:PID for mdSQL: 24168, On port: 8123
              Process:  mdSQL started
              Client connecting...
              Client connecting...
              Client connecting...
              Client connected
              Client connected
              Client connected
              !s1!Client connecting...
              !s1!Client connected
              !f1!Client connecting...
              !f1!Client connected
              !x1!Client connecting...
              !x1!Client connected
              !f1!S000000000042E000000000131T09:56:50.347DL00000731F../mdFIO/clsModFIO.cpp[void clsModFIO::doComm
              !f1!S000000000042E000000000131T09:56:50.347DL00000731F../mdFIO/clsModFIO.cpp[void clsModFIO::doCommand]
              2022-08-17 08:56:50,  Command#1: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
              !f1!S000000000043E000000000131T09:56:50.347D:Length
              !f1!S000000000043E000000000131T09:56:50.347D:Length: 1
              !f1!S000000000044E000000000131T09:56:50.347D:2022-08
              !f1!S000000000044E000000000131T09:56:50.347D:2022-08-17 08:56:50,  Command#2: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
              !f1!S000000000045E000000000131T09:56:50.347D:Length
              !f1!S000000000045E000000000131T09:56:50.347D:Length: 2
              !f1!S000000000046E000000000131T09:56:50.347D:2022-08
              !f1!S000000000046E000000000131T09:56:50.347D:2022-08-17 08:56:50,  Command#3: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
              !f1!S000000000047E000000000131T09:56:50.347D:Length
              !f1!S000000000047E000000000131T09:56:50.347D:Length: 4
              !f1!S000000000048E000000000131T09:56:50.348D:2022-08
              !f1!S000000000048E000000000131T09:56:50.348D:2022-08-17 08:56:50,  Command#4: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
              !f1!S000000000049E000000000131T09:56:50.348D:Length
              !f1!S000000000049E000000000131T09:56:50.348D:Length: 8
              !f1!S000000000050E000000000131T09:56:50.348D:2022-08
              !f1!S000000000050E000000000131T09:56:50.348D:2022-08-17 08:56:50,  Command#5: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
              !f1!S000000000051E000000000131T09:56:50.348D:Length
              !f1!S000000000051E000000000131T09:56:50.348D:Length: 4
              !f1!S000000000052E000000000131T09:56:50.348D:2022-08
              !f1!S000000000052E000000000131T09:56:50.348D:2022-08-17 08:56:50,  Command#6: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
              !f1!S000000000053E000000000131T09:56:50.348D:Length
              !f1!S000000000053E000000000131T09:56:50.348D:Length: 8
              !f1!S000000000054E000000000132T09:56:50.348D:2022-08
              !f1!S000000000054E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#7: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
              !f1!S000000000055E000000000132T09:56:50.348D:Length
              !f1!S000000000055E000000000132T09:56:50.348D:Length: 27
              !f1!S000000000056E000000000132T09:56:50.348D:2022-08
              !f1!S000000000056E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#8: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
              !f1!S000000000057E000000000132T09:56:50.348D:Length
              !f1!S000000000057E000000000132T09:56:50.348D:Length: 1
              !f1!S000000000058E000000000132T09:56:50.348D:2022-08
              !f1!S000000000058E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#9: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
              !f1!S000000000059E000000000132T09:56:50.348D:Length
              !f1!S000000000059E000000000132T09:56:50.348D:Length: 2
              !f1!S000000000060E000000000132T09:56:50.348D:2022-08
              !f1!S000000000060E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#10: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
              !f1!S000000000061E000000000132T09:56:50.348D:Length
              !f1!S000000000061E000000000132T09:56:50.348D:Length: 4
              !f1!S000000000062E000000000132T09:56:50.348D:2022-08
              !f1!S000000000062E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#11: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
              !f1!S000000000063E000000000132T09:56:50.348D:Length
              !f1!S000000000063E000000000132T09:56:50.348D:Length: 8
              !f1!S000000000064E000000000132T09:56:50.348D:2022-08
              !f1!S000000000064E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#12: find, File: /Users/sy/XMLMPAM/config/test.dat, Mode: r
              !f1!S000000000065E000000000132T09:56:50.348D:Length
              !f1!S000000000065E000000000132T09:56:50.348D:Length: 18446744073709551615
              !f1!S000000000066E000000000132T09:56:50.349D:2022-08
              !f1!S000000000066E000000000132T09:56:50.349D:2022-08-17 08:56:50,  Command#13: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rt
              !f1!S000000000067E000000000132T09:56:50.349D:Length
              !f1!S000000000067E000000000132T09:56:50.349D:Length: 3
              !f1!S000000000068E000000000132T09:56:50.349D:2022-08
              !f1!S000000000068E000000000132T09:56:50.349D:2022-08-17 08:56:50,  Command#14: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rt
              !f1!S000000000069E000000000132T09:56:50.349D:Length
              !f1!S000000000069E000000000132T09:56:50.349D:Length: 4
              !f1!S000000000070E000000000132T09:56:50.349D:2022-08
              !f1!S000000000070E000000000132T09:56:50.349D:2022-08-17 08:56:50,  Command#15: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rt
              !f1!S000000000071E000000000132T09:56:50.349D:Positio
              !f1!S000000000071E000000000132T09:56:50.349D:Position: -15
              !f1!S000000000072E000000000133T09:56:50.349D:Length
              !f1!S000000000072E000000000133T09:56:50.349D:Length: 5
              !f1!S000000000073E000000000133T09:56:50.349D:2022-08
              !f1!S000000000073E000000000133T09:56:50.349D:2022-08-17 08:56:50,  Command#16: tell, File: /Users/sy/XMLMPAM/config/test.dat, Mode: r
              !f1!S000000000074E000000000133T09:56:50.349D:Length
              !f1!S000000000074E000000000133T09:56:50.349D:Length: 18446744073709551615
              !s1!S000000000008E000000000137T09:56:50.343DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
              !s1!S000000000008E000000000137T09:56:50.343DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
              {"command":"connect","params":{"database":"test","driver":"QMYSQL","host":"localhost","pass":"resuocra","usr":"root"}}
              !s1!S000000000009E000000000179T09:56:50.384DL00000212F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
              !s1!S000000000009E000000000179T09:56:50.384DL00000212F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
              {"command":"connect","output":"connected"}
              S000000000036E000000007753T09:56:50.724T:W:QObject: Cannot create children for a parent that is in a different thread.
              (Parent is QNativeSocketEngine(0x600000012910), parent's thread is clsServer(0x600000257fc0), current thread is clsThread(0x600002c2a000)
              !s1!S000000000010E000000000519T09:56:50.724DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
              !s1!S000000000010E000000000519T09:56:50.724DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
              {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm LIMIT ?;"}
              !s1!S000000000011E000000000521T09:56:50.726DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
              !s1!S000000000011E000000000521T09:56:50.726DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
              {"command":"query","handler":"simon2.js@testFormHandler","output":"connected","records":[{"intEmployed":"1","intPri":"1","vcAddress":"Latona House\nStation Road\nCantley\nNorfolk\nNR13 3SQ","vcFirstName":"Simon","vcSex":"Male","vcSurName":"Platten"},{"intEmployed":"1","intPri":"2","vcAddress":"Latona House\nStation Road\nCantley\nNorfolk\nNR13 3SQ","vcFirstName":"Susan","vcSex":"Female","vcSurName":"Platten"}]}
              !s1!S000000000012E000000000781T09:56:50.987DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
              !s1!S000000000012E000000000781T09:56:50.987DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
              {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"}
              !s1!S000000000013E000000000782T09:56:50.987DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
              !s1!S000000000013E000000000782T09:56:50.987DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
              {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"}
              !s1!S000000000014E000000001044T09:56:51.249DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
              !s1!S000000000014E000000001044T09:56:51.249DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
              {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"}
              !s1!S000000000015E000000001044T09:56:51.249DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
              !s1!S000000000015E000000001044T09:56:51.249DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
              {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"}
              !s1!S000000000016E000000001304T09:56:51.510DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
              !s1!S000000000016E000000001304T09:56:51.510DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
              {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"}
              !s1!S000000000017E000000001305T09:56:51.510DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
              !s1!S000000000017E000000001305T09:56:51.510DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
              {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"}
              !s1!S000000000018E000000001562T09:56:51.767DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
              !s1!S000000000018E000000001562T09:56:51.767DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
              {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"}
              !s1!S000000000019E000000001562T09:56:51.768DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
              !s1!S000000000019E000000001562T09:56:51.768DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
              {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"}
              !s1!S000000000020E000000001812T09:56:52.017DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
              !s1!S000000000020E000000001812T09:56:52.017DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
              {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"}
              !s1!S000000000021E000000001812T09:56:52.017DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
              !s1!S000000000021E000000001812T09:56:52.017DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
              {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"}
              S000000000037E000000009157T09:56:52.128T:W:QObject: Cannot create children for a parent that is in a different thread.
              (Parent is QNativeSocketEngine(0x600000025290), parent's thread is clsServer(0x600000255400), current thread is clsThread(0x600002c2a000)
              S000000000038E000000009158T09:56:52.129T:W:QObject: Cannot create children for a parent that is in a different thread.
              (Parent is QNativeSocketEngine(0x6000000196e0), parent's thread is clsServer(0x600000256f60), current thread is clsThread(0x600002c2a000)
              

              Where:
              S is the sequence number
              E is the elapsed time
              T is the time stamp
              T:C Type:Critical warning
              T:D Type:Debug message
              T:F Type:Fatal error
              T:W Type:Warning
              L is the line number
              P is the path and file name

              This is what is shown in the Application Output which suggests the issue is generated during the initialisation of QApplication.

              
              10:04:03: Debugging /Users/sy/XMLMPAM/build-XMLMPAM-Desktop_Qt_5_15_2_clang_64bit-Debug/XMLMPAM.app/Contents/MacOS/XMLMPAM ~/XMLMPAM/config/xmlmpam ...
              
              got fallback qt version 0x50f02
              2022-08-17 10:04:08.921420+0100 XMLMPAM[24714:211122] SecTaskLoadEntitlements failed error=22 cs_flags=20, pid=24714
              2022-08-17 10:04:08.921503+0100 XMLMPAM[24714:211122] SecTaskCopyDebugDescription: XMLMPAM[24714]/0#-1 LF=0
              2022-08-17 10:04:09.414338+0100 XMLMPAM[24714:211122] SecTaskLoadEntitlements failed error=22 cs_flags=20, pid=24714
              2022-08-17 10:04:09.414418+0100 XMLMPAM[24714:211122] SecTaskCopyDebugDescription: XMLMPAM[24714]/0#-1 LF=0
              

              Found this:
              https://apple.stackexchange.com/questions/237465/what-means-sectaskloadentlitlements-failed-error-22

              D Offline
              D Offline
              DerReisende
              wrote on last edited by
              #24

              @SPlatten Then maybe this procedure might help you with qmake to get an entitlement running. Apart from networking I dont know what else you might need.
              With CMake it should be easier to add an entitlement to your qt app

              SPlattenS 1 Reply Last reply
              0
              • JoeCFDJ JoeCFD

                @DerReisende the log function in C++ 20 seems simpler. I use both spdlog and Qt logger.

                D Offline
                D Offline
                DerReisende
                wrote on last edited by
                #25

                @JoeCFD Yes, your link looks simpler, I only wanted to highlight that you can get almost the same result if you want to stay with c++17.
                And I am sort of reluctant to use c++20 as I got shot several times in the foot trying to compile code on macOS Xcode clang which was written on windows with VC++ :( XCode‘s clang seems to be not the most modern clang available and does lack quite some features available elsewhere.

                JoeCFDJ 1 Reply Last reply
                0
                • D DerReisende

                  @JoeCFD Yes, your link looks simpler, I only wanted to highlight that you can get almost the same result if you want to stay with c++17.
                  And I am sort of reluctant to use c++20 as I got shot several times in the foot trying to compile code on macOS Xcode clang which was written on windows with VC++ :( XCode‘s clang seems to be not the most modern clang available and does lack quite some features available elsewhere.

                  JoeCFDJ Offline
                  JoeCFDJ Offline
                  JoeCFD
                  wrote on last edited by
                  #26

                  @DerReisende I am switching to Ubuntu 22 which has complete C++20 features and am looking forward to using more C++20 features in the hope of making code simpler and more organized. Linking more libs is often annoying. I prefer to use fewer third party libs. Version matching and compatibility are painful in deployment.

                  D 1 Reply Last reply
                  0
                  • D DerReisende

                    @SPlatten Then maybe this procedure might help you with qmake to get an entitlement running. Apart from networking I dont know what else you might need.
                    With CMake it should be easier to add an entitlement to your qt app

                    SPlattenS Offline
                    SPlattenS Offline
                    SPlatten
                    wrote on last edited by
                    #27

                    @DerReisende , I'm really not sure what the messages SecTaskLoadEntitlements mean or what action I need to take?

                    Kind Regards,
                    Sy

                    D 1 Reply Last reply
                    0
                    • SPlattenS SPlatten

                      @DerReisende , I'm really not sure what the messages SecTaskLoadEntitlements mean or what action I need to take?

                      D Offline
                      D Offline
                      DerReisende
                      wrote on last edited by
                      #28

                      @SPlatten The entitlement stuff should have no impact for local development but will be necessary for deployment to other machines later with the hardened runtime otherwise you might not get any network connectivity etc.
                      Do you still have those crashes from the beginning of the thread?

                      1 Reply Last reply
                      0
                      • JoeCFDJ JoeCFD

                        @DerReisende I am switching to Ubuntu 22 which has complete C++20 features and am looking forward to using more C++20 features in the hope of making code simpler and more organized. Linking more libs is often annoying. I prefer to use fewer third party libs. Version matching and compatibility are painful in deployment.

                        D Offline
                        D Offline
                        DerReisende
                        wrote on last edited by
                        #29

                        @JoeCFD If you gonna take a look here what c++20 features are supported by Apple's clang you are going to start crying and wishing you could have VC++ on macOS :D

                        J.HilkJ 1 Reply Last reply
                        0
                        • D DerReisende

                          @JoeCFD If you gonna take a look here what c++20 features are supported by Apple's clang you are going to start crying and wishing you could have VC++ on macOS :D

                          J.HilkJ Offline
                          J.HilkJ Offline
                          J.Hilk
                          Moderators
                          wrote on last edited by
                          #30

                          @DerReisende said in Qt 6.3.1 painful....:

                          wishing you could have VC++ on macOS :D

                          no-one wishes to use MSVC !🤪


                          Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                          Q: What's that?
                          A: It's blue light.
                          Q: What does it do?
                          A: It turns blue.

                          JoeCFDJ 1 Reply Last reply
                          0
                          • J.HilkJ J.Hilk

                            @DerReisende said in Qt 6.3.1 painful....:

                            wishing you could have VC++ on macOS :D

                            no-one wishes to use MSVC !🤪

                            JoeCFDJ Offline
                            JoeCFDJ Offline
                            JoeCFD
                            wrote on last edited by JoeCFD
                            #31

                            @J-Hilk I liked it although I do not use it for now. I think it is a good one. You can see VS is the first one to have implemented full C++20 features.

                            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