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 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
491 } | 491 } |
492 | 492 |
493 return request.toJSONProtocol(); | 493 return request.toJSONProtocol(); |
494 }; | 494 }; |
495 | 495 |
496 | 496 |
497 // Create a JSON request for the backtrace command. | 497 // Create a JSON request for the backtrace command. |
498 DebugRequest.prototype.backtraceCommandToJSONRequest_ = function(args) { | 498 DebugRequest.prototype.backtraceCommandToJSONRequest_ = function(args) { |
499 // Build a backtrace request from the text command. | 499 // Build a backtrace request from the text command. |
500 var request = this.createRequest('backtrace'); | 500 var request = this.createRequest('backtrace'); |
| 501 |
| 502 // Default is to show top 10 frames. |
| 503 request.arguments = {}; |
| 504 request.arguments.fromFrame = 0; |
| 505 request.arguments.toFrame = 10; |
| 506 |
501 args = args.split(/\s*[ ]+\s*/g); | 507 args = args.split(/\s*[ ]+\s*/g); |
502 if (args.length == 2) { | 508 if (args.length == 1 && args[0].length > 0) { |
503 request.arguments = {}; | 509 var frameCount = parseInt(args[0]); |
| 510 if (frameCount > 0) { |
| 511 // Show top frames. |
| 512 request.arguments.fromFrame = 0; |
| 513 request.arguments.toFrame = frameCount; |
| 514 } else { |
| 515 // Show bottom frames. |
| 516 request.arguments.fromFrame = 0; |
| 517 request.arguments.toFrame = -frameCount; |
| 518 request.arguments.bottom = true; |
| 519 } |
| 520 } else if (args.length == 2) { |
504 var fromFrame = parseInt(args[0]); | 521 var fromFrame = parseInt(args[0]); |
505 var toFrame = parseInt(args[1]); | 522 var toFrame = parseInt(args[1]); |
506 if (isNaN(fromFrame) || fromFrame < 0) { | 523 if (isNaN(fromFrame) || fromFrame < 0) { |
507 throw new Error('Invalid start frame argument "' + args[0] + '".'); | 524 throw new Error('Invalid start frame argument "' + args[0] + '".'); |
508 } | 525 } |
509 if (isNaN(toFrame) || toFrame < 0) { | 526 if (isNaN(toFrame) || toFrame < 0) { |
510 throw new Error('Invalid end frame argument "' + args[1] + '".'); | 527 throw new Error('Invalid end frame argument "' + args[1] + '".'); |
511 } | 528 } |
512 if (fromFrame > toFrame) { | 529 if (fromFrame > toFrame) { |
513 throw new Error('Invalid arguments start frame cannot be larger ' + | 530 throw new Error('Invalid arguments start frame cannot be larger ' + |
514 'than end frame.'); | 531 'than end frame.'); |
515 } | 532 } |
| 533 // Show frame range. |
516 request.arguments.fromFrame = fromFrame; | 534 request.arguments.fromFrame = fromFrame; |
517 request.arguments.toFrame = toFrame + 1; | 535 request.arguments.toFrame = toFrame + 1; |
| 536 } else if (args.length > 2) { |
| 537 throw new Error('Invalid backtrace arguments.'); |
518 } | 538 } |
| 539 |
519 return request.toJSONProtocol(); | 540 return request.toJSONProtocol(); |
520 }; | 541 }; |
521 | 542 |
522 | 543 |
523 // Create a JSON request for the frame command. | 544 // Create a JSON request for the frame command. |
524 DebugRequest.prototype.frameCommandToJSONRequest_ = function(args) { | 545 DebugRequest.prototype.frameCommandToJSONRequest_ = function(args) { |
525 // Build a frame request from the text command. | 546 // Build a frame request from the text command. |
526 var request = this.createRequest('frame'); | 547 var request = this.createRequest('frame'); |
527 args = args.split(/\s*[ ]+\s*/g); | 548 args = args.split(/\s*[ ]+\s*/g); |
528 if (args.length > 0 && args[0].length > 0) { | 549 if (args.length > 0 && args[0].length > 0) { |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
748 // Help os quite simple. | 769 // Help os quite simple. |
749 if (args && args.length > 0) { | 770 if (args && args.length > 0) { |
750 print('warning: arguments to \'help\' are ignored'); | 771 print('warning: arguments to \'help\' are ignored'); |
751 } | 772 } |
752 | 773 |
753 print('break location [condition]'); | 774 print('break location [condition]'); |
754 print(' break on named function: location is a function name'); | 775 print(' break on named function: location is a function name'); |
755 print(' break on function: location is #<id>#'); | 776 print(' break on function: location is #<id>#'); |
756 print(' break on script position: location is name:line[:column]'); | 777 print(' break on script position: location is name:line[:column]'); |
757 print('clear <breakpoint #>'); | 778 print('clear <breakpoint #>'); |
758 print('backtrace [from frame #] [to frame #]]'); | 779 print('backtrace [n] | [-n] | [from to]'); |
759 print('frame <frame #>'); | 780 print('frame <frame #>'); |
760 print('step [in | next | out| min [step count]]'); | 781 print('step [in | next | out| min [step count]]'); |
761 print('print <expression>'); | 782 print('print <expression>'); |
762 print('source [from line [num lines]]'); | 783 print('source [from line [num lines]]'); |
763 print('scripts'); | 784 print('scripts'); |
764 print('continue'); | 785 print('continue'); |
765 print('trace compile'); | 786 print('trace compile'); |
766 print('help'); | 787 print('help'); |
767 } | 788 } |
768 | 789 |
(...skipping 689 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1458 json += NumberToJSON_(elem); | 1479 json += NumberToJSON_(elem); |
1459 } else if (typeof(elem) === 'string') { | 1480 } else if (typeof(elem) === 'string') { |
1460 json += StringToJSON_(elem); | 1481 json += StringToJSON_(elem); |
1461 } else { | 1482 } else { |
1462 json += elem; | 1483 json += elem; |
1463 } | 1484 } |
1464 } | 1485 } |
1465 json += ']'; | 1486 json += ']'; |
1466 return json; | 1487 return json; |
1467 } | 1488 } |
OLD | NEW |