Codewarrior® Debugger Manual

Total Page:16

File Type:pdf, Size:1020Kb

Codewarrior® Debugger Manual CodeWarrior¨ Debugger Manual Because of last-minute changes to CodeWarrior, some of the information in this manual may be inaccurate. Please read the Release Notes on the CodeWarrior CD for the latest up-to-date information. Metrowerks CodeWarrior copyright ©1993Ð1997 by Metrowerks Inc. and its licensors. All rights reserved. Documentation stored on the compact disk(s) may be printed by licensee for personal use. Except for the foregoing, no part of this documentation may be reproduced or transmitted in any form by any means, electronic or mechanical, including photocopying, recording, or any information storage and retrieval system, without permission in writing from Metrowerks Inc. Metrowerks, the Metrowerks logo, CodeWarrior, and Software at Work are registered trademarks of Metrowerks Inc. PowerPlant and PowerPlant Constructor are trademarks of Metrowerks Inc. All other trademarks and registered trademarks are the property of their respective owners. ALL SOFTWARE AND DOCUMENTATION ON THE COMPACT DISK(S) ARE SUB- JECT TO THE LICENSE AGREEMENT IN THE CD BOOKLET. How to Contact Metrowerks: U.S.A. and international Metrowerks Corporation 2201 Donley Drive, Suite 310 Austin, TX 78758 U.S.A. Canada Metrowerks Inc. 1500 du College, Suite 300 Ville St-Laurent, QC Canada H4L 5G6 Mail order Voice: (800) 377Ð5416 Fax: (512) 873Ð4901 World Wide Web http://www.metrowerks.com Registration information [email protected] Technical support [email protected] Sales, marketing, & licensing [email protected] CompuServe goto Metrowerks Table of Contents 1 Introduction . .9 Overview of the Debugger Manual . 9 Read the Release Notes . 10 WhatÕs New . 10 System Requirements . 10 Installing MW Debug . 11 Starting Points . 11 Where to Learn More . 12 2 Getting Started. 13 Getting Started Overview . 13 Preparing for Debugging . 13 Setting Up a Project for Debugging . 13 Setting Up a File for Debugging . 14 Launching the Debugger . 15 Launching the Debugger from a Project . 16 Launching the Debugger Directly . 16 Symbolics Files . 17 SYM File Names . 18 Matching the SYM File to an Executable File . 18 CodeView Symbols . 18 3 What You See . 19 What You See Overview . 19 Program Window. 19 Stack Crawl Pane. 21 Variables Pane . 21 Debugger Control Buttons. 23 Source Pane . 23 Viewing source code as assembly . 24 Function Pop-up Menu . 26 Browser Window . 27 File Pane . 28 Function Pane . 30 Debugger Manual DBÐ3 Table of Contents Globals Pane. 31 Placing globals in a separate window . 31 Browser Source Pane . 32 Function Pop-up Menu . 33 Expression Window. 33 Breakpoint Window. 35 Log Window . 35 Variable Window . 36 Array Window . 37 Memory Window . 39 Register Windows . 40 Process Window . 41 4 Basic Debugging. 43 Basic Debugging Overview . 43 Starting Up . 44 Running, Stepping, and Stopping Code . 45 The Current-Statement Arrow . 47 Running Your Code . 47 Stepping a Single Line . 49 Stepping Into Routines . 50 Stepping Out of Routines . 51 Skipping Statements . 51 Stopping Execution. 53 Killing Execution. 53 Navigating Code . 54 Linear Navigation . 54 Call-Chain Navigation . 55 Browser Window Navigation . 56 Using the Find Dialog. 59 Breakpoints . 61 Setting Breakpoints . 61 Clearing Breakpoints . 62 Temporary Breakpoints . 62 Viewing Breakpoints . 63 Conditional Breakpoints . 64 DBÐ4 Debugger Manual Table of Contents Viewing and Changing Data . 65 Viewing Local Variables. 65 Viewing Global Variables . 66 Putting Data in a New Window . 67 Viewing Data Types . 68 Viewing Data in a Different Format . 69 Viewing Data as Different Types . 70 Changing the Value of a Variable . 72 Using the Expression Window . 73 Viewing Raw Memory . 74 Viewing Memory at an Address . 74 Viewing Processor Registers . 76 5 Expressions . 79 Expressions Overview. 79 In the Expression Window. 79 In the Breakpoint Window. 80 In a Memory Window. 81 Using Expressions . 82 Special Expression Features . 82 Expression Limitations . 82 Example Expressions . 84 Expression Syntax . 86 6 Debugger Preferences . 91 Debugger Preferences Overview . 91 Settings & Display . 92 Save settings in local Ò.dbgÓ Þles . 92 Save breakpoints. 92 Save expressions . 93 In variable panes, show variable types by default . 93 Sort functions by method name in browser . 93 Default size for unbound arrays . 93 Symbolics . 93 Use temporary memory for SYM data . 94 At startup, prompt for SYM Þle if none speciÞed . 94 Debugger Manual DBÐ5 Table of Contents Always prompt for source Þle location if Þle not found . 95 Ignore Þle modiÞcation dates . 95 Open all class Þles in directory hierarchy . 95 Program Control . 95 Automatically launch applications when SYM Þle opened. 96 ConÞrm ÒKill ProcessÓ when closing or quitting . 96 Stop at program main when launching applications . 97 Select stack crawl window when task is stopped . 97 DonÕt step into runtime support code . 97 Win32 Settings . 97 Java Settings . 99 Runtime Settings . 99 7 Debugger Menus. 103 Debugger Menus Overview . 103 Help menu. 103 File Menu . 103 Open . 104 Close . 104 Edit Þlename . 105 Save . 105 Save As. 105 Save Settings . 105 Quit . 105 Edit Menu . 106 Undo. 106 Cut . 106 Copy . 106 Paste . 106 Clear . 106 Select All . 106 Find . 107 Find Next . 107 Find Selection . 107 Preferences . 107 Control Menu . 107 DBÐ6 Debugger Manual Table of Contents Run . 108 Stop . 108 Kill. 108 Step Over . 108 Step Into . 109 Step Out . 109 Clear All Breakpoints. 109 Break on C++ exception. 110 Data Menu. 110 Show Types . 110 Expand . 110 Collapse All . 110 New Expression . 110 Open Variable Window . 111 Open Array Window . 111 Copy to Expression . ..
Recommended publications
  • Codewarrior™ Development Studio for Freescale™ 56800/E Digital Signal Controllers: Mc56f8xxx/Dsp5685x Family Targeting Manual
    CodeWarrior™ Development Studio for Freescale™ 56800/E Digital Signal Controllers: MC56F8xxx/DSP5685x Family Targeting Manual Revised: 19 June 2006 Freescale, the Freescale logo, and CodeWarrior are trademarks or registered trademarks of Freescale Corporation in the United States and/or other countries. All other trade names and trademarks are the property of their respective owners. Copyright © 2006 by Freescale Semiconductor company. All rights reserved. No portion of this document may be reproduced or transmitted in any form or by any means, electronic or me- chanical, without prior written permission from Freescale. Use of this document and related materials is gov- erned by the license agreement that accompanied the product to which this manual pertains. This document may be printed for non-commercial personal use only in accordance with the aforementioned license agreement. If you do not have a copy of the license agreement, contact your Freescale representative or call 1-800-377-5416 (if outside the U.S., call +1-512-996-5300). Freescale reserves the right to make changes to any product described or referred to in this document without further notice. Freescale makes no warranty, representation or guarantee regarding the merchantability or fitness of its products for any particular purpose, nor does Freescale assume any liability arising out of the application or use of any product described herein and specifically disclaims any and all liability. Freescale software is not authorized for and has not been designed, tested, manufactured, or intended for use in developing applications where the failure, malfunc- tion, or any inaccuracy of the application carries a risk of death, serious bodily injury, or damage to tangible property, including, but not limited to, use in factory control systems, medical devices or facilities, nuclear facil- ities, aircraft navigation or communication, emergency systems, or other applications with a similar degree of potential hazard.
    [Show full text]
  • Porting Codewarrior Projects to Xcode
    Porting CodeWarrior Projects to Xcode 2006-09-05 Intel and Intel Core are registered Apple Computer, Inc. trademarks of Intel Corportation or its © 2003, 2006 Apple Computer, Inc. subsidiaries in the United States and other All rights reserved. countries. Java and all Java-based trademarks are No part of this publication may be trademarks or registered trademarks of Sun reproduced, stored in a retrieval system, or Microsystems, Inc. in the U.S. and other transmitted, in any form or by any means, countries. mechanical, electronic, photocopying, recording, or otherwise, without prior OpenGL is a registered trademark of Silicon written permission of Apple Computer, Inc., Graphics, Inc. with the following exceptions: Any person PowerPC and and the PowerPC logo are is hereby authorized to store documentation trademarks of International Business on a single computer for personal use only Machines Corporation, used under license and to print copies of documentation for therefrom. personal use provided that the Simultaneously published in the United documentation contains Apple’s copyright States and Canada. notice. Even though Apple has reviewed this document, The Apple logo is a trademark of Apple APPLE MAKES NO WARRANTY OR Computer, Inc. REPRESENTATION, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO THIS Use of the “keyboard” Apple logo DOCUMENT, ITS QUALITY, ACCURACY, MERCHANTABILITY, OR FITNESS FOR A (Option-Shift-K) for commercial purposes PARTICULAR PURPOSE. AS A RESULT, THIS without the prior written consent of Apple DOCUMENT IS PROVIDED “AS IS,” AND YOU, THE READER, ARE ASSUMING THE may constitute trademark infringement and ENTIRE RISK AS TO ITS QUALITY AND unfair competition in violation of federal ACCURACY.
    [Show full text]
  • Development of a Personal Diet Plan Database Application for Persons with Severe Food Allergies Heather Suzanne Ward Regis University
    Regis University ePublications at Regis University All Regis University Theses Summer 2005 Development Of A Personal Diet Plan Database Application For Persons With Severe Food Allergies Heather Suzanne Ward Regis University Follow this and additional works at: https://epublications.regis.edu/theses Part of the Computer Sciences Commons Recommended Citation Ward, Heather Suzanne, "Development Of A Personal Diet Plan Database Application For Persons With Severe Food Allergies" (2005). All Regis University Theses. 772. https://epublications.regis.edu/theses/772 This Thesis - Open Access is brought to you for free and open access by ePublications at Regis University. It has been accepted for inclusion in All Regis University Theses by an authorized administrator of ePublications at Regis University. For more information, please contact [email protected]. Regis University School for Professional Studies Graduate Programs Final Project/Thesis Disclaimer Use of the materials available in the Regis University Thesis Collection (“Collection”) is limited and restricted to those users who agree to comply with the following terms of use. Regis University reserves the right to deny access to the Collection to any person who violates these terms of use or who seeks to or does alter, avoid or supersede the functional conditions, restrictions and limitations of the Collection. The site may be used only for lawful purposes. The user is solely responsible for knowing and adhering to any and all applicable laws, rules, and regulations relating or pertaining to use of the Collection. All content in this Collection is owned by and subject to the exclusive control of Regis University and the authors of the materials.
    [Show full text]
  • Dynamic Object-Oriented Programming with Smalltalk
    Dynamic Object-Oriented Programming with Smalltalk 1. Introduction Prof. O. Nierstrasz Autumn Semester 2009 LECTURE TITLE What is surprising about Smalltalk > Everything is an object > Everything happens by sending messages > All the source code is there all the time > You can't lose code > You can change everything > You can change things without restarting the system > The Debugger is your Friend © Oscar Nierstrasz 2 ST — Introduction Why Smalltalk? > Pure object-oriented language and environment — “Everything is an object” > Origin of many innovations in OO development — RDD, IDE, MVC, XUnit … > Improves on many of its successors — Fully interactive and dynamic © Oscar Nierstrasz 1.3 ST — Introduction What is Smalltalk? > Pure OO language — Single inheritance — Dynamically typed > Language and environment — Guiding principle: “Everything is an Object” — Class browser, debugger, inspector, … — Mature class library and tools > Virtual machine — Objects exist in a persistent image [+ changes] — Incremental compilation © Oscar Nierstrasz 1.4 ST — Introduction Smalltalk vs. C++ vs. Java Smalltalk C++ Java Object model Pure Hybrid Hybrid Garbage collection Automatic Manual Automatic Inheritance Single Multiple Single Types Dynamic Static Static Reflection Fully reflective Introspection Introspection Semaphores, Some libraries Monitors Concurrency Monitors Categories, Namespaces Packages Modules namespaces © Oscar Nierstrasz 1.5 ST — Introduction Smalltalk: a State of Mind > Small and uniform language — Syntax fits on one sheet of paper >
    [Show full text]
  • Java Core Technologies (Part III)
    Extreme Java G22.3033-007 Session 5 - Main Theme Java Core Technologies (Part III) Dr. Jean-Claude Franchitti New York University Computer Science Department Courant Institute of Mathematical Sciences 1 Agenda • Summary of Previous Session / Epilogue • Java Media APIs •Java 2D API • Java Media Framework • XBeans and Visual XBeans •JNI • Java Generative Programming Technology • Language Features •Threads • Readings 2 1 Summary of Previous Session • Summary of Previous Session • Java AWT and Swing components • Drag and Drop • Graphics and Multimedia Components (JavaMedia) • JavaBeans • Readings • Class Project & Assignment #2b 3 Java Technologies/Features in Scope • Technologies: • Collections Framework • Input Method Framework • Swing • Drag and Drop • JavaBeans •JNI • Security • Language Features: • Threads • Assertions 4 2 Part I Session 4 Epilogue 5 Drag and Drop (http://java.sun.com/j2se/1.4/docs/guide/swing/1.4/dnd.html) • See Session 4 Handout on Drag and Drop Data Transfer • Adding Drag and Drop to a JTree • In J2SE 1.4, JTree supports Drag but developers must implement and install a custom TransferHandler to fully support imports of data on Drop targets • http://www.javaworld.com/javaworld/javatips/jw-javatip97.html • http://www.javaworld.com/javaworld/javatips/jw-javatip114.html • http://sourceforge.net/projects/ijtree/ 6 3 JavaBeans and JAF (http://java.sun.com/j2se/1.4/docs/guide/beans/changes14.html) • See Session 4 Handout on Component Modeling with JavaBeans • Download the BeanBuilder • http://java.sun.com/products/javabeans/beanbuilder/index.html
    [Show full text]
  • Nested Class Modularity in Squeak/Smalltalk
    Springer, Nested Class Modularity in Squeak/Smalltalk Nested Class Modularity in Squeak/Smalltalk Modularität mit geschachtelten Klassen in Squeak/Smalltalk by Matthias Springer A thesis submitted to the Hasso Plattner Institute at the University of Potsdam, Germany in partial fulfillment of the requirements for the degree of Master of Science in ITSystems Engineering Supervisor Prof. Dr. Robert Hirschfeld Software Architecture Group Hasso Plattner Institute University of Potsdam, Germany August 17, 2015 Abstract We present the concept, the implementation, and an evaluation of Matriona, a module system for and written in Squeak/Smalltalk. Matriona is inspired by Newspeak and based on class nesting: classes are members of other classes, similarly to class instance variables. Top-level classes (modules) are globals and nested classes can be accessed using message sends to the corresponding enclosing class. Class nesting effec- tively establishes a global and hierarchical namespace, and allows for modular decomposition, resulting in better understandability, if applied properly. Classes can be parameterized, allowing for external configuration of classes, a form of dependency management. Furthermore, parameterized classes go hand in hand with mixin modularity. Mixins are a form of inter-class code reuse and based on single inheritance. We show how Matriona can be used to solve the problem of duplicate classes in different modules, to provide a versioning and dependency management mech- anism, and to improve understandability through hierarchical decomposition. v Zusammenfassung Diese Arbeit beschreibt das Konzept, die Implementierung und die Evaluierung von Matriona, einem Modulsystem für und entwickelt in Squeak/Smalltalk. Ma- triona ist an Newspeak angelehnt und basiert auf geschachtelten Klassen: Klassen, die, wie zum Beispiel auch klassenseitige Instanzvariablen, zu anderen Klassen gehören.
    [Show full text]
  • Reflection in Smalltalk
    Louvain School of Engineering (EPL) rev. 2012-07-03 Computing Science Engineering Department (INGI) . Reflection and Context-Oriented Programming (R+COP)with 2nd practical session ANSWERS Reflection in Smalltalk .This. session is a hopefully gentle introduction to Smalltalk’s meta-object protocol. You can use the tools of the Smalltalk environment to find answers to all questions. In particular: • Use the System Browser to navigate through classes, their methods and their hierarchies. The class browser also gives you valuable information on the overriding of methods and you can use the right-click menu on any method to explore senders and implementors of any messages used inside the method body. • Use the Finder tool to search for methods implementing a particular message. • Use the Inspector for individual objects, and evaluate expressions in the context of the inspected object. • Select an expression in any browser and use the right-click menu to browse all implementors or senders of the method. This session starts the exploration of reflection in Smalltalk by considering class instantiation, class inheritance, and the interaction between these two concepts. The second part of the session focuses on structural and behavioural reflection. Smalltalk Kernel: Instantiation Relationship 1. What is the class of 1984? Which message can you send to obtain the class of an object? Apply this message to 1984 and inspect the result. Inside the inspector, what do you conclude from evaluating and printing the result of self inside the lower-right text pane? The message that retrieves the class of an instance is class. If you inspect the result of 1984 class, you will obtain an inspector window with a SmallInteger class as window title and self bound to SmallInteger, as you can check by printing self.
    [Show full text]
  • Configuring the Codewarrior Tools to Debug a BSC9131RDB Board
    Freescale Semiconductor Document Number: AN4384 Application Note Rev. 0, 07/2012 Configuring the CodeWarrior Tools to Debug a BSC9131RDB Board by Freescale Semiconductor, Inc. Austin, TX This application note describes how to configure Contents the Freescale CodeWarrior tools to support 1 BSC9131 overview .................................................... 2 developing and debugging of embedded 2 Debugger configuration strategies ............................. 4 3 BSC9131RDB board setup ........................................ 6 software on the BSC9131RDB board. 4 Two-TAP connection scheme .................................... 7 5 Revision history ........................................................ 33 Because the QorIQ Qonverge BSC9131 Appendix A How to Disable the SC3850 Caches ....... 34 processor contains two disparate processor Appendix B DSP Debugging with a BSP Present ....... 38 Appendix C Ethernet TAP Run Controller Options ..... 39 cores, writing software for the part requires two different sets of CodeWarrior tools: one to manage the DSP core, and another to manage the system core. Care must be taken to ensure that the two sets of tools do not interact with each other. Both the proper configuration sequences and the potential pitfalls are described here. This application note assumes the use of CodeWarrior for StarCore DSPs v10.2.10 or later, and CodeWarrior for Power Architecture® v10.1.2 or later. © 2012 Freescale Semiconductor, Inc. 1 BSC9131 overview The Freescale QorIQ Qonverge BSC9131 contains two processor cores, each of whose microarchitecture is optimized for a specific purpose: StarCore SC3850 DSP core implements high-throughput signal processing functions Power Architecture e500 core implements high-volume network functions These cores manage a number of powerful peripherals, all of which are interconnected through a low- latency switching fabric (Figure 1). However, for debugging setup purposes, only the cores are considered in this application note.
    [Show full text]
  • Codewarrior™ Build Tools Reference for Freescale™ 56800/E Hybrid Controllers
    Freescale Semiconductor, Inc. CodeWarrior™ Build Tools Reference for Freescale™ 56800/E Hybrid Controllers Revised 28 October 2004 For More Information: www.freescale.com Freescale Semiconductor, Inc. Metrowerks and the Metrowerks logo are registered trademarks of Metrowerks Corporation in the United States and/ or other countries. CodeWarrior is a trademark or registered trademark of Metrowerks Corporation in the United States and/or other countries. All other trade names and trademarks are the property of their respective owners. Copyright © 2004 Metrowerks Corporation. ALL RIGHTS RESERVED. No portion of this document may be reproduced or transmitted in any form or by any means, electronic or me- chanical, without prior written permission from Metrowerks. Use of this document and related materials are governed by the license agreement that accompanied the product to which this manual pertains. This document may be printed for non-commercial personal use only in accordance with the aforementioned license agree- ment. If you do not have a copy of the license agreement, contact your Metrowerks representative or call 1-800- 377-5416 (if outside the U.S., call +1-512-996-5300). Metrowerks reserves the right to make changes to any product described or referred to in this document without further notice. Metrowerks makes no warranty, representation or guarantee regarding the merchantability or fitness of its prod- ucts for any particular purpose, nor does Metrowerks assume any liability arising out of the application or use of any product
    [Show full text]
  • Ultimate++ Forum
    Subject: Porting (Mac OS X) and "reference application" idea Posted by mirek on Thu, 17 May 2007 15:35:21 GMT View Forum Message <> Reply to Message I have an idea how to speed-up the porting (MacOS X now, be it is general). The most time consuming part of problem is to find out all the information about implementing required things on target platform, something that developer that knows the platform would find primitive. OTOH, target platform guru's are unlikely to know about U++ implementation details. So my idea is to create "reference application" that will contain all the function for minimal (and perhaps later, advanced) target platform support. Target platform guru will reimplement this application (using the most straighforward way) and submit the code, which will serve as great boost to development speed (sort of U++ oriented knowledge base). Thoughts? Mirek Subject: Re: Porting (Mac OS X) and "reference application" idea Posted by captainc on Sun, 14 Sep 2008 13:08:14 GMT View Forum Message <> Reply to Message luzr wrote on Thu, 17 May 2007 11:35I have an idea how to speed-up the porting (MacOS X now, be it is general). The most time consuming part of problem is to find out all the information about implementing required things on target platform, something that developer that knows the platform would find primitive. OTOH, target platform guru's are unlikely to know about U++ implementation details. So my idea is to create "reference application" that will contain all the function for minimal (and perhaps later, advanced) target platform support.
    [Show full text]
  • Xcode Chapter.Indd
    Chapter 1 Xcode Many computer books use Chapter 1 to cover introductory material. Xcode Tools Sensei is not one of those books. I want you to start learning immediately. After reading this chapter you’ll know how to create a project, add files to your project, edit source code, model data, read developer documentation, configure the compiler, and build your project into a working Mac OS X program. Creating a Project Every program you write with Xcode requires a project, no matter how small the program is. An Xcode project contains your program’s source code files and other files Xcode needs to build a working program, such as Interface Builder nib files. To create an Xcode project, choose File > New Project, and the Project Assistant window opens. Xcode has the following project categories: n Action n Application n Audio Units n Bundle n Command-Line Utility n Dynamic Library n External Build System n Framework n J2EE n Java n Kernel Extension n Standard Apple Plug-Ins n Static Library I will go into greater detail on the types of projects shortly, but most of you will be making application projects. After choosing the type of project you want to make, click the Next button. Tell Xcode the name of your project and where you want to store it, then click the Finish button. Congratulations! You’ve created an Xcode project. What Xcode includes in a project depends on the type of project you create. Xcode includes the following files for a Cocoa application: n An Objective C source code file, main.m.
    [Show full text]
  • Codewarrior® Palm OS 2.0 Tutorial for Windows
    CodeWarrior® Palm OS 2.0 Tutorial for Windows Because of last-minute changes to CodeWarrior, some of the information in this manual may be inaccurate. Please read the Release Notes on the CodeWarrior CD for the latest up-to-date information. Revised: 98/01/19 map Metrowerks CodeWarrior copyright ©1993Ð1998 by Metrowerks Inc. and its licensors. All rights reserved. Documentation stored on the compact disk(s) may be printed by licensee for personal use. Except for the foregoing, no part of this documentation may be reproduced or trans- mitted in any form by any means, electronic or mechanical, including photocopying, recording, or any information storage and retrieval system, without permission in writing from Metrowerks Inc. Metrowerks, the Metrowerks logo, CodeWarrior, and Software at Work are registered trademarks of Metrowerks Inc. PowerPlant and PowerPlant Constructor are trademarks of Metrowerks Inc. All other trademarks and registered trademarks are the property of their respective owners. ALL SOFTWARE AND DOCUMENTATION ON THE COMPACT DISK(S) ARE SUB- JECT TO THE LICENSE AGREEMENT IN THE CD BOOKLET. How to Contact Metrowerks: U.S.A. and international Metrowerks Corporation P.O. Box 334 Austin, TX 78758 U.S.A. Canada Metrowerks Inc. 1500 du College, Suite 300 Ville St-Laurent, QC Canada H4L 5G6 Ordering Voice: (800) 377Ð5416 Fax: (512) 873Ð4901 World Wide Web http://www.metrowerks.com Registration information [email protected] Technical support [email protected] Sales, marketing, & licensing [email protected] CompuServe goto Metrowerks Table of Contents Table of Contents . iii Introduction . 13 System Requirements for Macintosh Users . 14 Hardware Requirements . 14 Software Requirements .
    [Show full text]