keymetrics / pm2-io-apm

PM2.io APM for Node.JS
Apache License 2.0
147 stars 40 forks source link

feat: add scopes & async stack trace on error #170

Closed vmarchaud closed 6 years ago

vmarchaud commented 6 years ago

Example output :

{
   "stack":"TypeError: res.send is not a function\n    at Server.require.Server (/home/vmarchaud/keymetrics/pmx-2/build/main/test/fixtures/features/catchAllInspectorChild.js:7:9)\n    at emitTwo (events.js:126:13)\n    at Server.emit (events.js:214:7)\n    at parserOnIncoming (_http_server.js:619:12)\n    at HTTPParser.parserOnHeadersComplete (_http_common.js:112:17)\n    at connectionListenerInternal (_http_server.js:318:9)\n    at connectionListener (_http_server.js:295:2)\n    at emitOne (events.js:115:12)\n    at emit (events.js:210:6)\n    at onconnection (net.js:1564:7)\n    at createServerHandle (net.js:1278:13)\n    at setupListenHandle (net.js:1321:13)\n    at listenInCluster (net.js:1395:11)\n    at Server.listen (net.js:1479:6)\n    at <anonymous> (/home/vmarchaud/keymetrics/pmx-2/build/main/test/fixtures/features/catchAllInspectorChild.js:12:14)\n    at Module._compile (module.js:651:29)\n    at Module._extensions..js (module.js:662:9)\n    at Module.load (module.js:564:31)\n    at tryModuleLoad (module.js:504:11)\n    at Module._load (module.js:496:2)\n    at Module.runMain (module.js:692:9)\n    at startup (bootstrap_node.js:190:15)\n    at <anonymous> (bootstrap_node.js:611:2)",
   "message":"res.send is not a function",
   "frame":{
      "callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}",
      "functionName":"require.Server",
      "functionLocation":{
         "scriptId":"76",
         "lineNumber":3,
         "columnNumber":36
      },
      "location":{
         "scriptId":"76",
         "lineNumber":6,
         "columnNumber":8
      },
      "scopeChain":[
         {
            "type":"local",
            "name":"require.Server",
            "startLocation":{
               "scriptId":"76",
               "lineNumber":3,
               "columnNumber":36
            },
            "endLocation":{
               "scriptId":"76",
               "lineNumber":7,
               "columnNumber":1
            },
            "context":[
               {
                  "name":"req",
                  "value":"IncomingMessage",
                  "properties":[
                     {
                        "name":"url",
                        "value":"/"
                     },
                     {
                        "name":"method",
                        "value":"GET"
                     }
                  ]
               },
               {
                  "name":"res",
                  "value":"ServerResponse"
               },
               {
                  "name":"toto",
                  "value":"yolo"
               }
            ]
         },
         {
            "type":"closure",
            "startLocation":{
               "scriptId":"76",
               "lineNumber":0,
               "columnNumber":10
            },
            "endLocation":{
               "scriptId":"76",
               "lineNumber":19,
               "columnNumber":1
            },
            "context":[
               {
                  "name":"httpModule",
                  "value":"Object"
               },
               {
                  "name":"server",
                  "value":"Server"
               }
            ]
         }
      ],
      "this":{
         "type":"object",
         "className":"Server",
         "description":"Server",
         "objectId":"{\"injectedScriptId\":1,\"id\":5}"
      }
   }
}