| OLD | NEW | 
|     1 // Copyright 2008 the V8 project authors. All rights reserved. |     1 // Copyright 2008 the V8 project authors. All rights reserved. | 
|     2 // Redistribution and use in source and binary forms, with or without |     2 // Redistribution and use in source and binary forms, with or without | 
|     3 // modification, are permitted provided that the following conditions are |     3 // modification, are permitted provided that the following conditions are | 
|     4 // met: |     4 // met: | 
|     5 // |     5 // | 
|     6 //     * Redistributions of source code must retain the above copyright |     6 //     * Redistributions of source code must retain the above copyright | 
|     7 //       notice, this list of conditions and the following disclaimer. |     7 //       notice, this list of conditions and the following disclaimer. | 
|     8 //     * Redistributions in binary form must reproduce the above |     8 //     * Redistributions in binary form must reproduce the above | 
|     9 //       copyright notice, this list of conditions and the following |     9 //       copyright notice, this list of conditions and the following | 
|    10 //       disclaimer in the documentation and/or other materials provided |    10 //       disclaimer in the documentation and/or other materials provided | 
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|    95  |    95  | 
|    96 // Current debug state. |    96 // Current debug state. | 
|    97 const kNoFrame = -1; |    97 const kNoFrame = -1; | 
|    98 Debug.State = { |    98 Debug.State = { | 
|    99   currentFrame: kNoFrame, |    99   currentFrame: kNoFrame, | 
|   100   currentSourceLine: -1 |   100   currentSourceLine: -1 | 
|   101 } |   101 } | 
|   102 var trace_compile = false;  // Tracing all compile events? |   102 var trace_compile = false;  // Tracing all compile events? | 
|   103  |   103  | 
|   104  |   104  | 
|   105 function DebugEventToText(event) { |   105 // Process a debugger JSON message into a display text and a running status. | 
 |   106 // This function returns an object with properties "text" and "running" holding | 
 |   107 // this information. | 
 |   108 function DebugMessageDetails(message) { | 
|   106   // Convert the JSON string to an object. |   109   // Convert the JSON string to an object. | 
|   107   var response = new ProtocolPackage(event); |   110   var response = new ProtocolPackage(message); | 
|   108  |   111  | 
|   109   // Build the text. |   112   if (response.type() == 'event') { | 
 |   113     return DebugEventDetails(response); | 
 |   114   } else { | 
 |   115     return DebugResponseDetails(response); | 
 |   116   } | 
 |   117 } | 
 |   118  | 
 |   119 function DebugEventDetails(response) { | 
 |   120   details = {text:'', running:false} | 
 |   121  | 
 |   122   // Get the running state. | 
 |   123   details.running = response.running(); | 
 |   124  | 
|   110   var body = response.body(); |   125   var body = response.body(); | 
|   111   var details = ''; |   126   var result = ''; | 
|   112   switch (response.event()) { |   127   switch (response.event()) { | 
|   113     case 'break': |   128     case 'break': | 
|   114       if (body.breakpoints) { |   129       if (body.breakpoints) { | 
|   115         details += 'breakpoint'; |   130         result += 'breakpoint'; | 
|   116         if (body.breakpoints.length > 1) { |   131         if (body.breakpoints.length > 1) { | 
|   117           details += 's'; |   132           result += 's'; | 
|   118         } |   133         } | 
|   119         details += ' #'; |   134         result += ' #'; | 
|   120         for (var i = 0; i < body.breakpoints.length; i++) { |   135         for (var i = 0; i < body.breakpoints.length; i++) { | 
|   121           if (i > 0) { |   136           if (i > 0) { | 
|   122             details += ', #'; |   137             result += ', #'; | 
|   123           } |   138           } | 
|   124           details += body.breakpoints[i]; |   139           result += body.breakpoints[i]; | 
|   125         } |   140         } | 
|   126       } else { |   141       } else { | 
|   127         details += 'break'; |   142         result += 'break'; | 
|   128       } |   143       } | 
|   129       details += ' in '; |   144       result += ' in '; | 
|   130       details += body.invocationText; |   145       result += body.invocationText; | 
|   131       details += ', '; |   146       result += ', '; | 
|   132       details += SourceInfo(body); |   147       result += SourceInfo(body); | 
|   133       details += '\n'; |   148       result += '\n'; | 
|   134       details += SourceUnderline(body.sourceLineText, body.sourceColumn); |   149       result += SourceUnderline(body.sourceLineText, body.sourceColumn); | 
|   135       Debug.State.currentSourceLine = body.sourceLine; |   150       Debug.State.currentSourceLine = body.sourceLine; | 
|   136       Debug.State.currentFrame = 0; |   151       Debug.State.currentFrame = 0; | 
|   137       return details; |   152       details.text = result; | 
 |   153       break; | 
|   138        |   154        | 
|   139     case 'exception': |   155     case 'exception': | 
|   140       if (body.uncaught) { |   156       if (body.uncaught) { | 
|   141         details += 'Uncaught: '; |   157         result += 'Uncaught: '; | 
|   142       } else { |   158       } else { | 
|   143         details += 'Exception: '; |   159         result += 'Exception: '; | 
|   144       } |   160       } | 
|   145       details += '"'; |   161       result += '"'; | 
|   146       details += body.exception.text; |   162       result += body.exception.text; | 
|   147       details += '"'; |   163       result += '"'; | 
|   148       if (body.sourceLine >= 0) { |   164       if (body.sourceLine >= 0) { | 
|   149         details += ', '; |   165         result += ', '; | 
|   150         details += SourceInfo(body); |   166         result += SourceInfo(body); | 
|   151         details += '\n'; |   167         result += '\n'; | 
|   152         details += SourceUnderline(body.sourceLineText, body.sourceColumn); |   168         result += SourceUnderline(body.sourceLineText, body.sourceColumn); | 
|   153         Debug.State.currentSourceLine = body.sourceLine; |   169         Debug.State.currentSourceLine = body.sourceLine; | 
|   154         Debug.State.currentFrame = 0; |   170         Debug.State.currentFrame = 0; | 
|   155       } else { |   171       } else { | 
|   156         details += ' (empty stack)'; |   172         result += ' (empty stack)'; | 
|   157         Debug.State.currentSourceLine = -1; |   173         Debug.State.currentSourceLine = -1; | 
|   158         Debug.State.currentFrame = kNoFrame; |   174         Debug.State.currentFrame = kNoFrame; | 
|   159       } |   175       } | 
|   160       return details; |   176       details.text = result; | 
 |   177       break; | 
|   161  |   178  | 
|   162     case 'exception': |  | 
|   163       if (trace_compile) { |  | 
|   164         details = 'Source ' + body.script.name + ' compiled:\n' |  | 
|   165       } else { |  | 
|   166         return ''; |  | 
|   167       } |  | 
|   168       |  | 
|   169     case 'afterCompile': |   179     case 'afterCompile': | 
|   170       if (trace_compile) { |   180       if (trace_compile) { | 
|   171         details = 'Source ' + event.script().name() + ' compiled:\n' |   181         result = 'Source ' + body.script.name + ' compiled:\n' | 
|   172         var source = body.script.source; |   182         var source = body.script.source; | 
|   173         if (!(source[source.length - 1] == '\n')) { |   183         if (!(source[source.length - 1] == '\n')) { | 
|   174           details += source; |   184           result += source; | 
|   175         } else { |   185         } else { | 
|   176           details += source.substring(0, source.length - 1); |   186           result += source.substring(0, source.length - 1); | 
|   177         } |   187         } | 
|   178         return details; |  | 
|   179       } else { |  | 
|   180         return ''; |  | 
|   181       } |   188       } | 
 |   189       details.text = result; | 
 |   190       break; | 
 |   191  | 
 |   192     default: | 
 |   193       details.text = 'Unknown debug event ' + response.event(); | 
|   182   } |   194   } | 
|   183   return 'Unknown debug event ' + response.event(); |   195  | 
 |   196   return details; | 
|   184 }; |   197 }; | 
|   185  |   198  | 
|   186  |   199  | 
|   187 function SourceInfo(body) { |   200 function SourceInfo(body) { | 
|   188   var result = ''; |   201   var result = ''; | 
|   189    |   202    | 
|   190   if (body.script) { |   203   if (body.script) { | 
|   191     if (body.script.name) { |   204     if (body.script.name) { | 
|   192       result += body.script.name; |   205       result += body.script.name; | 
|   193     } else { |   206     } else { | 
| (...skipping 548 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   742       result += ' '; |   755       result += ' '; | 
|   743       result += formatHandleReference_(property_value); |   756       result += formatHandleReference_(property_value); | 
|   744       result += '\n'; |   757       result += '\n'; | 
|   745     } |   758     } | 
|   746   } |   759   } | 
|   747   return result; |   760   return result; | 
|   748 } |   761 } | 
|   749  |   762  | 
|   750  |   763  | 
|   751 // Convert a JSON response to text for display in a text based debugger. |   764 // Convert a JSON response to text for display in a text based debugger. | 
|   752 function DebugResponseDetails(json_response) { |   765 function DebugResponseDetails(response) { | 
|   753   details = {text:'', running:false} |   766   details = {text:'', running:false} | 
|   754  |   767  | 
|   755   try { |   768   try { | 
|   756     // Convert the JSON string to an object. |  | 
|   757     var response = new ProtocolPackage(json_response); |  | 
|   758  |  | 
|   759     if (!response.success()) { |   769     if (!response.success()) { | 
|   760       details.text = response.message(); |   770       details.text = response.message(); | 
|   761       return details; |   771       return details; | 
|   762     } |   772     } | 
|   763  |   773  | 
|   764     // Get the running state. |   774     // Get the running state. | 
|   765     details.running = response.running(); |   775     details.running = response.running(); | 
|   766  |   776  | 
|   767     var body = response.body(); |   777     var body = response.body(); | 
|   768     var result = ''; |   778     var result = ''; | 
| (...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1384       json += NumberToJSON_(elem); |  1394       json += NumberToJSON_(elem); | 
|  1385     } else if (typeof(elem) === 'string')  { |  1395     } else if (typeof(elem) === 'string')  { | 
|  1386       json += StringToJSON_(elem); |  1396       json += StringToJSON_(elem); | 
|  1387     } else { |  1397     } else { | 
|  1388       json += elem; |  1398       json += elem; | 
|  1389     } |  1399     } | 
|  1390   } |  1400   } | 
|  1391   json += ']'; |  1401   json += ']'; | 
|  1392   return json; |  1402   return json; | 
|  1393 } |  1403 } | 
| OLD | NEW |