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 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
334 | 334 |
335 case 'scripts': | 335 case 'scripts': |
336 this.request_ = this.scriptsCommandToJSONRequest_(args); | 336 this.request_ = this.scriptsCommandToJSONRequest_(args); |
337 break; | 337 break; |
338 | 338 |
339 case 'break': | 339 case 'break': |
340 case 'b': | 340 case 'b': |
341 this.request_ = this.breakCommandToJSONRequest_(args); | 341 this.request_ = this.breakCommandToJSONRequest_(args); |
342 break; | 342 break; |
343 | 343 |
| 344 case 'breakpoints': |
| 345 case 'bb': |
| 346 this.request_ = this.breakpointsCommandToJSONRequest_(args); |
| 347 break; |
| 348 |
344 case 'clear': | 349 case 'clear': |
345 this.request_ = this.clearCommandToJSONRequest_(args); | 350 this.request_ = this.clearCommandToJSONRequest_(args); |
346 break; | 351 break; |
347 | 352 |
348 case 'threads': | 353 case 'threads': |
349 this.request_ = this.threadsCommandToJSONRequest_(args); | 354 this.request_ = this.threadsCommandToJSONRequest_(args); |
350 break; | 355 break; |
351 | 356 |
352 case 'trace': | 357 case 'trace': |
353 // Return undefined to indicate command handled internally (no JSON). | 358 // Return undefined to indicate command handled internally (no JSON). |
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
763 request.arguments.column = column; | 768 request.arguments.column = column; |
764 request.arguments.condition = condition; | 769 request.arguments.condition = condition; |
765 } else { | 770 } else { |
766 var request = this.createRequest('suspend'); | 771 var request = this.createRequest('suspend'); |
767 } | 772 } |
768 | 773 |
769 return request.toJSONProtocol(); | 774 return request.toJSONProtocol(); |
770 }; | 775 }; |
771 | 776 |
772 | 777 |
| 778 DebugRequest.prototype.breakpointsCommandToJSONRequest_ = function(args) { |
| 779 if (args && args.length > 0) { |
| 780 throw new Error('Unexpected arguments.'); |
| 781 } |
| 782 var request = this.createRequest('listbreakpoints'); |
| 783 return request.toJSONProtocol(); |
| 784 }; |
| 785 |
| 786 |
773 // Create a JSON request for the clear command. | 787 // Create a JSON request for the clear command. |
774 DebugRequest.prototype.clearCommandToJSONRequest_ = function(args) { | 788 DebugRequest.prototype.clearCommandToJSONRequest_ = function(args) { |
775 // Build a evaluate request from the text command. | 789 // Build a evaluate request from the text command. |
776 var request = this.createRequest('clearbreakpoint'); | 790 var request = this.createRequest('clearbreakpoint'); |
777 | 791 |
778 // Process arguments if any. | 792 // Process arguments if any. |
779 if (args && args.length > 0) { | 793 if (args && args.length > 0) { |
780 request.arguments = {}; | 794 request.arguments = {}; |
781 request.arguments.breakpoint = parseInt(args); | 795 request.arguments.breakpoint = parseInt(args); |
782 } else { | 796 } else { |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
940 result = 'set breakpoint #'; | 954 result = 'set breakpoint #'; |
941 result += body.breakpoint; | 955 result += body.breakpoint; |
942 details.text = result; | 956 details.text = result; |
943 break; | 957 break; |
944 | 958 |
945 case 'clearbreakpoint': | 959 case 'clearbreakpoint': |
946 result = 'cleared breakpoint #'; | 960 result = 'cleared breakpoint #'; |
947 result += body.breakpoint; | 961 result += body.breakpoint; |
948 details.text = result; | 962 details.text = result; |
949 break; | 963 break; |
| 964 |
| 965 case 'listbreakpoints': |
| 966 result = 'breakpoints: (' + body.breakpoints.length + ')'; |
| 967 for (var i = 0; i < body.breakpoints.length; i++) { |
| 968 var breakpoint = body.breakpoints[i]; |
| 969 result += '\n id=' + breakpoint.number; |
| 970 result += ' type=' + breakpoint.type; |
| 971 if (breakpoint.script_id) { |
| 972 result += ' script_id=' + breakpoint.script_id; |
| 973 } |
| 974 if (breakpoint.script_name) { |
| 975 result += ' script_name=' + breakpoint.script_name; |
| 976 } |
| 977 result += ' line=' + breakpoint.line; |
| 978 if (breakpoint.column != null) { |
| 979 result += ' column=' + breakpoint.column; |
| 980 } |
| 981 if (breakpoint.groupId) { |
| 982 result += ' groupId=' + breakpoint.groupId; |
| 983 } |
| 984 if (breakpoint.ignoreCount) { |
| 985 result += ' ignoreCount=' + breakpoint.ignoreCount; |
| 986 } |
| 987 if (breakpoint.active === false) { |
| 988 result += ' inactive'; |
| 989 } |
| 990 if (breakpoint.condition) { |
| 991 result += ' condition=' + breakpoint.condition; |
| 992 } |
| 993 result += ' hit_count=' + breakpoint.hit_count; |
| 994 } |
| 995 details.text = result; |
| 996 break; |
950 | 997 |
951 case 'backtrace': | 998 case 'backtrace': |
952 if (body.totalFrames == 0) { | 999 if (body.totalFrames == 0) { |
953 result = '(empty stack)'; | 1000 result = '(empty stack)'; |
954 } else { | 1001 } else { |
955 var result = 'Frames #' + body.fromFrame + ' to #' + | 1002 var result = 'Frames #' + body.fromFrame + ' to #' + |
956 (body.toFrame - 1) + ' of ' + body.totalFrames + '\n'; | 1003 (body.toFrame - 1) + ' of ' + body.totalFrames + '\n'; |
957 for (i = 0; i < body.frames.length; i++) { | 1004 for (i = 0; i < body.frames.length; i++) { |
958 if (i != 0) result += '\n'; | 1005 if (i != 0) result += '\n'; |
959 result += body.frames[i].text; | 1006 result += body.frames[i].text; |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1129 } | 1176 } |
1130 details.text = result; | 1177 details.text = result; |
1131 break; | 1178 break; |
1132 | 1179 |
1133 case 'continue': | 1180 case 'continue': |
1134 details.text = "(running)"; | 1181 details.text = "(running)"; |
1135 break; | 1182 break; |
1136 | 1183 |
1137 default: | 1184 default: |
1138 details.text = | 1185 details.text = |
1139 'Response for unknown command \'' + response.command + '\'' + | 1186 'Response for unknown command \'' + response.command() + '\'' + |
1140 ' (' + json_response + ')'; | 1187 ' (' + response.raw_json() + ')'; |
1141 } | 1188 } |
1142 } catch (e) { | 1189 } catch (e) { |
1143 details.text = 'Error: "' + e + '" formatting response'; | 1190 details.text = 'Error: "' + e + '" formatting response'; |
1144 } | 1191 } |
1145 | 1192 |
1146 return details; | 1193 return details; |
1147 }; | 1194 }; |
1148 | 1195 |
1149 | 1196 |
1150 /** | 1197 /** |
1151 * Protocol packages send from the debugger. | 1198 * Protocol packages send from the debugger. |
1152 * @param {string} json - raw protocol packet as JSON string. | 1199 * @param {string} json - raw protocol packet as JSON string. |
1153 * @constructor | 1200 * @constructor |
1154 */ | 1201 */ |
1155 function ProtocolPackage(json) { | 1202 function ProtocolPackage(json) { |
| 1203 this.raw_json_ = json; |
1156 this.packet_ = JSON.parse(json); | 1204 this.packet_ = JSON.parse(json); |
1157 this.refs_ = []; | 1205 this.refs_ = []; |
1158 if (this.packet_.refs) { | 1206 if (this.packet_.refs) { |
1159 for (var i = 0; i < this.packet_.refs.length; i++) { | 1207 for (var i = 0; i < this.packet_.refs.length; i++) { |
1160 this.refs_[this.packet_.refs[i].handle] = this.packet_.refs[i]; | 1208 this.refs_[this.packet_.refs[i].handle] = this.packet_.refs[i]; |
1161 } | 1209 } |
1162 } | 1210 } |
1163 } | 1211 } |
1164 | 1212 |
1165 | 1213 |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1236 ProtocolPackage.prototype.lookup = function(handle) { | 1284 ProtocolPackage.prototype.lookup = function(handle) { |
1237 var value = this.refs_[handle]; | 1285 var value = this.refs_[handle]; |
1238 if (value) { | 1286 if (value) { |
1239 return new ProtocolValue(value, this); | 1287 return new ProtocolValue(value, this); |
1240 } else { | 1288 } else { |
1241 return new ProtocolReference(handle); | 1289 return new ProtocolReference(handle); |
1242 } | 1290 } |
1243 } | 1291 } |
1244 | 1292 |
1245 | 1293 |
| 1294 ProtocolPackage.prototype.raw_json = function() { |
| 1295 return this.raw_json_; |
| 1296 } |
| 1297 |
| 1298 |
1246 function ProtocolValue(value, packet) { | 1299 function ProtocolValue(value, packet) { |
1247 this.value_ = value; | 1300 this.value_ = value; |
1248 this.packet_ = packet; | 1301 this.packet_ = packet; |
1249 } | 1302 } |
1250 | 1303 |
1251 | 1304 |
1252 /** | 1305 /** |
1253 * Get the value type. | 1306 * Get the value type. |
1254 * @return {String} the value type | 1307 * @return {String} the value type |
1255 */ | 1308 */ |
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1621 json += NumberToJSON_(elem); | 1674 json += NumberToJSON_(elem); |
1622 } else if (typeof(elem) === 'string') { | 1675 } else if (typeof(elem) === 'string') { |
1623 json += StringToJSON_(elem); | 1676 json += StringToJSON_(elem); |
1624 } else { | 1677 } else { |
1625 json += elem; | 1678 json += elem; |
1626 } | 1679 } |
1627 } | 1680 } |
1628 json += ']'; | 1681 json += ']'; |
1629 return json; | 1682 return json; |
1630 } | 1683 } |
OLD | NEW |