Time-Travel Debugging for Javascript/Node.Js

Total Page:16

File Type:pdf, Size:1020Kb

Time-Travel Debugging for Javascript/Node.Js Time-Travel Debugging for JavaScript/Node.js Earl T. Barr Mark Marron Ed Maurer University College London, UK Microsoft Research, USA Microsoft, USA [email protected] [email protected] [email protected] Dan Moseley Gaurav Seth Microsoft, USA Microsoft, USA [email protected] [email protected] ABSTRACT Time-traveling in the execution history of a program during de- bugging enables a developer to precisely track and understand the sequence of statements and program values leading to an error. To provide this functionality to real world developers, we embarked on a two year journey to create a production quality time-traveling de- bugger in Microsoft’s open-source ChakraCore JavaScript engine and the popular Node.js application framework. CCS Concepts •Software and its engineering ! Software testing and debug- Figure 1: Visual Studio Code with extra time-travel functional- ging; ity (Step-Back button in top action bar) at a breakpoint. Keywords • Options for both using time-travel during local debugging Time-Travel Debugging, JavaScript, Node.js and for recording a trace in production for postmortem de- bugging or other analysis (Section 2.1). 1. INTRODUCTION • Reverse-Step Local and Dynamic operations (Section 2.2) Modern integrated development environments (IDEs) provide a that allow the developer to step-back in time to the previously range of tools for setting breakpoints, examining program state, and executed statement in the current function or to step-back in manually logging execution. These features enable developers to time to the previously executed statement in any frame in- quickly track down localized bugs, provided all of the relevant val- cluding exception throws or callee returns. ues remain on the call-stack and the root cause of the failure is • Reverse to Callback Origin operation (Section 2.3) that re- close to where the error manifests itself. However, they provide verses time to the line that registered the currently executing only rudimentary support to iteratively track down more difficult callback e.g. the call to setTimeout(...) where the cur- errors: developers often resort to repeatedly setting breakpoints and rently executing function was registered. rerunning the program. The dynamic nature of JavaScript and the extensive use of callbacks/promises in Node.js can make this pro- In combination with the low-overhead imposed by JARDIS (un- cess especially tedious and time-consuming. der 2% runtime increase in Section 4), these features provide a Time-traveling debuggers offer an attractive alternative to the it- system that is suitable for use as both the default debugger for erative process of debugging nontrivial errors using a traditional Node.js applications and for collecting execution histories from in- debugger. Instead of requiring developers to stop debugging, set a production deployments. Thus, JARDIS represents a major advance new breakpoint, and then reproduce the desired execution to hit that in state of the art debugging tools and provides an enabling technol- breakpoint, time-traveling debuggers allow a developer to simply ogy for related research areas including interrogative debugging, press a button to step-back in a program’s execution. We present automated fault localization, and performance profiling. JARDIS, a time-traveling debugger for JavaScript; it provides a rich set of functionality for recording and navigating the execution his- 2. FEATURES tory of a program including: JARDIS provides a range of features for debugging programs us- ing JavaScript/Node.js and improves developer productivity in both local and postmortem debugging scenarios1. 2.1 Local Debugging and Offline Recording JARDIS starts by augmenting the conventional graphical debug- ger, including its variable and call stack displays, breakpoints, and single-stepping, with the ability to reverse step through code exe- cution via its Reverse-Step button as shown in Figure 1. Preprint: This is the author’s version of the work. It is posted here for 1 personal use. The definitive version can be found at http://dl.acm.org. A video demo of JARDIS is available at [12]. 1 f u n c t i o n b a r(x){ 2 return x.g; 3 } 4 5 f u n c t i o n foo(){ 6 var v= undefined ; 7 t r y 8 { bar(v);} 9 catch (e) 10 { /*bp2*/ c o n s o l e.log( ’fail’ +e);} 11 } 12 13 b a r({g: 10 }); 14 /*bp1*/ c o n s o l e.log( ’success’ ); Figure 2: Remote recording with a telemetry service, followed 15 16 s e t T i m e o u t(foo, 10); by postmortem debugging at full fidelity. Figure 3: Reverse-Step (rs) vs. Reverse-Step Dynamic (rsd). JARDIS also supports postmortem debugging, as shown in the workflow in Figure 2. In this scenario, the developer runs their application under JARDIS’s record mode when deployed to their 2.3 Callback Reverse to Origin users, given their consent. When an error occurs, the execution JavaScript and Node.js code use callbacks (also called promises trace is sent to the specified location for debugging later. The col- or continuations) extensively. Debugging this code can be chal- lected trace has sufficient information to replay the execution of lenging as the control flow is difficult to reconstruct: code regis- the program exactly, including any non-determinism, and show the tered at one point in a program’s execution is invoked by the event value of any JavaScript program variable that the developer might loop later, sometimes much later. When a developer is at a break- be interested in. Thus, the debugging experience is the same as if point in some callback code, they may not, therefore, know where the developer had a debugger attached to the remote Node.js pro- or why this callback code was registered, what the program state cess when the trace was collected. was at that time, or why the callback was was eventually invoked. To record the trace, the developer simply invokes Node with an To address this challenge, JARDIS provides its reverse to callback additional command line flag, -TTRecord:[uri], where the uri origin (rcbo) operation. This operation allows the developer to parameter indicates the location (a file or remote server) to save the travel back from the currently executing callback to the point in trace. By default, we continuously record approximately the most time when the callback was registered. To illustrate this operation, recent 2–4 seconds of execution in a ring buffer and save the data if consider the code in Figure 3. If current break statement is at line an unhandled exception occurs, a call to process.exit is made, 10, labeled bp2, then the rcbo operation reverse-executes to the or a dump is explicitly requested by the the application. All of these line with the setTimeout where the callback to foo was registered parameters can be adjusted as desired. (line 16). Later, the developer can load and debug the serialized trace by invoking the replay host with TTDebugHost [uri] and attaching 3. IMPLEMENTATION a debugger. In Figure 2, Visual Studio Code [23] is configured to JARDIS is part of Microsoft’s ChakraCore JavaScript engine [7] do this and execute the code/trace to the point where the exception and a fork of the Node.js runtime environment [18]. The overall is thrown. When this point is reached, the debugging experience system design is a record-replay-snapshot architecture [2, 10, 16]. is virtually identical to the standard local debugging scenario: the The snapshot algorithm is based on [2] with the record-replay work developer can inspect any value of interest, view the stack frame, done in the JsRT hosting API layer [14] that Node.js uses to in- set breakpoints, step forward/back in the code, and even evaluate terface with the JavaScript runtime. The snapshot code and the expressions in the watch window. record-replay code involves approximately 20 kloc in the Chakra- Core codebase. We added less than 100 lines of code to the Node.js 2.2 Reverse-Step Operations codebase. Source code is available online [7, 18]. The first type of reverse-step operation, and most commonly use- As Figure 4 shows, a Node.js process consists of the Chakra- ful operation, provided by the JARDIS tool is a reverse-step (rs) to Core JavaScript engine and the Node.js runtime hosting environ- the previously executed line in the current call frame. This is sim- ment. The ChakraCore engine executes the application JavaScript ply the reverse version of the forward step provided by existing code, while the Node host manages all interactions with the envi- graphical and command line debuggers. The next type of reverse ronment including, file and network IO, callback scheduling, and operation provided by JARDIS is reverse-step dynamic (rsd) which OS resources. The Node host interacts with the ChakraCore engine acts as the reverse version of step-into operations in existing debug- via the JsRT API, which allows the Node host to create/inspect ob- gers. This operation steps-back in time to the previously executed jects, invoke JavaScript functions, and create JavaScript function statement in any frame. wrappers that call back into native host code when invoked. To illustrate the various use cases for these operations and how they differ, consider the code in Figure 3. If the current breakpoint 3.1 Record and Replay is at line 14, labeled bp1, then the rsd operation reverse-executes To record the full range of events needed to replay the execu- to the return statement of the previously called method (line 2 in tion of the JavaScript component of the program, we added logging bar) while the rs operation reverse-executes to line 13.
Recommended publications
  • Differential Fuzzing the Webassembly
    Master’s Programme in Security and Cloud Computing Differential Fuzzing the WebAssembly Master’s Thesis Gilang Mentari Hamidy MASTER’S THESIS Aalto University - EURECOM MASTER’STHESIS 2020 Differential Fuzzing the WebAssembly Fuzzing Différentiel le WebAssembly Gilang Mentari Hamidy This thesis is a public document and does not contain any confidential information. Cette thèse est un document public et ne contient aucun information confidentielle. Thesis submitted in partial fulfillment of the requirements for the degree of Master of Science in Technology. Antibes, 27 July 2020 Supervisor: Prof. Davide Balzarotti, EURECOM Co-Supervisor: Prof. Jan-Erik Ekberg, Aalto University Copyright © 2020 Gilang Mentari Hamidy Aalto University - School of Science EURECOM Master’s Programme in Security and Cloud Computing Abstract Author Gilang Mentari Hamidy Title Differential Fuzzing the WebAssembly School School of Science Degree programme Master of Science Major Security and Cloud Computing (SECCLO) Code SCI3084 Supervisor Prof. Davide Balzarotti, EURECOM Prof. Jan-Erik Ekberg, Aalto University Level Master’s thesis Date 27 July 2020 Pages 133 Language English Abstract WebAssembly, colloquially known as Wasm, is a specification for an intermediate representation that is suitable for the web environment, particularly in the client-side. It provides a machine abstraction and hardware-agnostic instruction sets, where a high-level programming language can target the compilation to the Wasm instead of specific hardware architecture. The JavaScript engine implements the Wasm specification and recompiles the Wasm instruction to the target machine instruction where the program is executed. Technically, Wasm is similar to a popular virtual machine bytecode, such as Java Virtual Machine (JVM) or Microsoft Intermediate Language (MSIL).
    [Show full text]
  • Interaction Between Web Browsers and Script Engines
    IT 12 058 Examensarbete 45 hp November 2012 Interaction between web browsers and script engines Xiaoyu Zhuang Institutionen för informationsteknologi Department of Information Technology Abstract Interaction between web browser and the script engine Xiaoyu Zhuang Teknisk- naturvetenskaplig fakultet UTH-enheten Web browser plays an important part of internet experience and JavaScript is the most popular programming language as a client side script to build an active and Besöksadress: advance end user experience. The script engine which executes JavaScript needs to Ångströmlaboratoriet Lägerhyddsvägen 1 interact with web browser to get access to its DOM elements and other host objects. Hus 4, Plan 0 Browser from host side needs to initialize the script engine and dispatch script source code to the engine side. Postadress: This thesis studies the interaction between the script engine and its host browser. Box 536 751 21 Uppsala The shell where the engine address to make calls towards outside is called hosting layer. This report mainly discussed what operations could appear in this layer and Telefon: designed testing cases to validate if the browser is robust and reliable regarding 018 – 471 30 03 hosting operations. Telefax: 018 – 471 30 00 Hemsida: http://www.teknat.uu.se/student Handledare: Elena Boris Ämnesgranskare: Justin Pearson Examinator: Lisa Kaati IT 12 058 Tryckt av: Reprocentralen ITC Contents 1. Introduction................................................................................................................................
    [Show full text]
  • AAS Worldwide Telescope: Seamless, Cross-Platform Data Visualization Engine for Astronomy Research, Education, and Democratizing Data
    AAS WorldWide Telescope: Seamless, Cross-Platform Data Visualization Engine for Astronomy Research, Education, and Democratizing Data The Harvard community has made this article openly available. Please share how this access benefits you. Your story matters Citation Rosenfield, Philip, Jonathan Fay, Ronald K Gilchrist, Chenzhou Cui, A. David Weigel, Thomas Robitaille, Oderah Justin Otor, and Alyssa Goodman. 2018. AAS WorldWide Telescope: Seamless, Cross-Platform Data Visualization Engine for Astronomy Research, Education, and Democratizing Data. The Astrophysical Journal: Supplement Series 236, no. 1. Published Version https://iopscience-iop-org.ezp-prod1.hul.harvard.edu/ article/10.3847/1538-4365/aab776 Citable link http://nrs.harvard.edu/urn-3:HUL.InstRepos:41504669 Terms of Use This article was downloaded from Harvard University’s DASH repository, and is made available under the terms and conditions applicable to Open Access Policy Articles, as set forth at http:// nrs.harvard.edu/urn-3:HUL.InstRepos:dash.current.terms-of- use#OAP Draft version January 30, 2018 Typeset using LATEX twocolumn style in AASTeX62 AAS WorldWide Telescope: Seamless, Cross-Platform Data Visualization Engine for Astronomy Research, Education, and Democratizing Data Philip Rosenfield,1 Jonathan Fay,1 Ronald K Gilchrist,1 Chenzhou Cui,2 A. David Weigel,3 Thomas Robitaille,4 Oderah Justin Otor,1 and Alyssa Goodman5 1American Astronomical Society 1667 K St NW Suite 800 Washington, DC 20006, USA 2National Astronomical Observatories, Chinese Academy of Sciences 20A Datun Road, Chaoyang District Beijing, 100012, China 3Christenberry Planetarium, Samford University 800 Lakeshore Drive Birmingham, AL 35229, USA 4Aperio Software Ltd. Headingley Enterprise and Arts Centre, Bennett Road Leeds, LS6 3HN, United Kingdom 5Harvard Smithsonian Center for Astrophysics 60 Garden St.
    [Show full text]
  • Machine Learning in the Browser
    Machine Learning in the Browser The Harvard community has made this article openly available. Please share how this access benefits you. Your story matters Citable link http://nrs.harvard.edu/urn-3:HUL.InstRepos:38811507 Terms of Use This article was downloaded from Harvard University’s DASH repository, and is made available under the terms and conditions applicable to Other Posted Material, as set forth at http:// nrs.harvard.edu/urn-3:HUL.InstRepos:dash.current.terms-of- use#LAA Machine Learning in the Browser a thesis presented by Tomas Reimers to The Department of Computer Science in partial fulfillment of the requirements for the degree of Bachelor of Arts in the subject of Computer Science Harvard University Cambridge, Massachusetts March 2017 Contents 1 Introduction 3 1.1 Background . .3 1.2 Motivation . .4 1.2.1 Privacy . .4 1.2.2 Unavailable Server . .4 1.2.3 Simple, Self-Contained Demos . .5 1.3 Challenges . .5 1.3.1 Performance . .5 1.3.2 Poor Generality . .7 1.3.3 Manual Implementation in JavaScript . .7 2 The TensorFlow Architecture 7 2.1 TensorFlow's API . .7 2.2 TensorFlow's Implementation . .9 2.3 Portability . .9 3 Compiling TensorFlow into JavaScript 10 3.1 Motivation to Compile . 10 3.2 Background on Emscripten . 10 3.2.1 Build Process . 12 3.2.2 Dependencies . 12 3.2.3 Bitness Assumptions . 13 3.2.4 Concurrency Model . 13 3.3 Experiences . 14 4 Results 15 4.1 Benchmarks . 15 4.2 Library Size . 16 4.3 WebAssembly . 17 5 Developer Experience 17 5.1 Universal Graph Runner .
    [Show full text]
  • Javascript API Deprecation in the Wild: a First Assessment
    JavaScript API Deprecation in the Wild: A First Assessment Romulo Nascimento, Aline Brito, Andre Hora, Eduardo Figueiredo Department of Computer Science Federal University of Minas Gerais, Brazil romulonascimento, alinebrito, andrehora,figueiredo @dcc.ufmg.br { } Abstract—Building an application using third-party libraries of our knowledge, there are no detailed studies regarding API is a common practice in software development. As any other deprecation in the JavaScript ecosystem. software system, code libraries and their APIs evolve over JavaScript has become extremely popular over the last years. time. In order to help version migration and ensure backward According to the Stack Overflow 2019 Developer Survey1, compatibility, a recommended practice during development is to deprecate API. Although studies have been conducted to JavaScript is the most popular programming language in this investigate deprecation in some programming languages, such as platform for the seventh consecutive year. GitHub also reports Java and C#, there are no detailed studies on API deprecation that JavaScript is the most popular language in terms of unique in the JavaScript ecosystem. This paper provides an initial contributors to both public and private repositories2. The npm assessment of API deprecation in JavaScript by analyzing 50 platform, the largest JavaScript package manager, states on popular software projects. Initial results suggest that the use of 3 deprecation mechanisms in JavaScript packages is low. However, their latest survey that 99% of JavaScript developers rely on wefindfive different ways that developers use to deprecate API npm to ease the management of their project dependencies. in the studied projects. Among these solutions, deprecation utility This survey also points out the massive growth in npm usage (i.e., any sort of function specially written to aid deprecation) and that started about 5 years ago.
    [Show full text]
  • XAMARIN.FORMS for BEGINNERS ABOUT ME Tom Soderling Sr
    XAMARIN.FORMS FOR BEGINNERS ABOUT ME Tom Soderling Sr. Mobile Apps Developer @ Polaris Industries; Ride Command Xamarin.Forms enthusiast DevOps hobbyist & machine learning beginner 4 year XCMD Blog: https://tomsoderling.github.io GitHub: https://github.com/TomSoderling Twitter: @tomsoderling How Deep Pickster Spaniel Is It? THE PLAN • Introduction: Why, What, and When • Overview of Xamarin.Forms Building Blocks • Building a Xamarin.Forms UI in XAML • Data Binding • View Customization • Next Steps & Resources • Please ask any questions that come up! THE PLAN • Introduction: Why, What, and When • Overview of Xamarin.Forms Building Blocks • Building a Xamarin.Forms UI in XAML • Data Binding • View Customization • Next Steps & Resources INTRODUCTION : WHY • WET: the soggy state of mobile app development • Write Everything Twice INTRODUCTION : WHY • WET: the soggy state of mobile app development • Write Everything Twice INTRODUCTION : WHAT • What is Xamarin.Forms? • Cross-platform UI framework • Platforms: • Mobile: iOS 8 and up, Android 4.0.3 (API 15) • Desktop: Windows 10 UWP, MacOS, WFP • Samsung Smart Devices: Tizen INTRODUCTION : WHAT • Brief History: • May 2011, Xamarin founded • MonoTouch and Mono for Android using MonoDevelop IDE • February 2013, release of Xamarin 2.0 • Xamarin Studio IDE & integration with Visual Studio • Renamed to Xamarin.Android and Xamarin.iOS • May 2014, Xamarin.Forms released as part of Xamarin 3 • February 24 2016, Xamarin acquired by Microsoft • Owned, actively developed on, and supported by Microsoft • Free
    [Show full text]
  • Online Visualization of Geospatial Stream Data Using the Worldwide Telescope
    Online Visualization of Geospatial Stream Data using the WorldWide Telescope Mohamed Ali#, Badrish Chandramouli*, Jonathan Fay*, Curtis Wong*, Steven Drucker*, Balan Sethu Raman# #Microsoft SQL Server, One Microsoft Way, Redmond WA 98052 {mali, sethur}@microsoft.com *Microsoft Research, One Microsoft Way, Redmond WA 98052 {badrishc, jfay, curtis.wong, sdrucker}@microsoft.com ABSTRACT execution query pipeline. StreamInsight has been used in the past This demo presents the ongoing effort to meld the stream query to process geospatial data, e.g., in traffic monitoring [4, 5]. processing capabilities of Microsoft StreamInsight with the On the other hand, the WorldWide Telescope (WWT) [9] enables visualization capabilities of the WorldWide Telescope. This effort a computer to function as a virtual telescope, bringing together provides visualization opportunities to manage, analyze, and imagery from the various ground and space-based telescopes in process real-time information that is of spatio-temporal nature. the world. WWT enables a wide range of user experiences, from The demo scenario is based on detecting, tracking and predicting narrated guided tours from astronomers and educators featuring interesting patterns over historical logs and real-time feeds of interesting places in the sky, to the ability to explore the features earthquake data. of planets. One interesting feature of WWT is its use as a 3-D model of earth, enabling its use as an earth viewer. 1. INTRODUCTION Real-time stream data acquisition has been widely used in This demo presents the ongoing work at Microsoft Research and numerous applications such as network monitoring, Microsoft SQL Server groups to meld the value of stream query telecommunications data management, security, manufacturing, processing of StreamInsight with the unique visualization and sensor networks.
    [Show full text]
  • Licensing Information User Manual Release 9.1 F13415-01
    Oracle® Hospitality Cruise Fleet Management Licensing Information User Manual Release 9.1 F13415-01 August 2019 LICENSING INFORMATION USER MANUAL Oracle® Hospitality Fleet Management Licensing Information User Manual Version 9.1 Copyright © 2004, 2019, Oracle and/or its affiliates. All rights reserved. This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error- free. If you find any errors, please report them to us in writing. If this software or related documentation is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.
    [Show full text]
  • Internet Explorer 9 Features
    m National Institute of Information Technologies NIIT White Paper On “What is New in Internet Explorer 9” Submitted by: Md. Yusuf Hasan Student ID: S093022200027 Year: 1st Quarter: 2nd Program: M.M.S Date - 08 June 2010 Dhaka - Bangladesh Internet Explorer History Abstract: In the early 90s—the dawn of history as far as the World Wide Web is concerned—relatively few users were communicating across this Internet Explorer 9 (abbreviated as IE9) is the upcoming global network. They used an assortment of shareware and other version of the Internet Explorer web browser from software for Microsoft Windows operating system. In 1995, Microsoft Microsoft. It is currently in development, but developer hosted an Internet Strategy Day and announced its commitment to adding Internet capabilities to all its products. In fulfillment of that previews have been released. announcement, Microsoft Internet Explorer arrived as both a graphical Web browser and the name for a set of technologies. IE9 will have complete or nearly complete support for all 1995: Internet Explorer 1.0: In July 1995, Microsoft released the CSS 3 selectors, border-radius CSS 3 property, faster Windows 95 operating system, which included built-in support for JavaScript and embedded ICC v2 or v4 color profiles dial-up networking and TCP/IP (Transmission Control support via Windows Color System. IE9 will feature Protocol/Internet Protocol), key technologies for connecting to the hardware accelerated graphics rendering using Direct2D, Internet. In response to the growing public interest in the Internet, Microsoft created an add-on to the operating system called Internet hardware accelerated text rendering using Direct Write, Explorer 1.0.
    [Show full text]
  • Stackwalkerapi Programmer's Guide
    Paradyn Parallel Performance Tools StackwalkerAPI Programmer’s Guide 9.2 Release June 2016 Computer Sciences Department University of Wisconsin–Madison Madison, WI 53706 Computer Science Department University of Maryland College Park, MD 20742 Email [email protected] Web www.dyninst.org Contents 1 Introduction 3 2 Abstractions 4 2.1 Stackwalking Interface . .5 2.2 Callback Interface . .5 3 API Reference 6 3.1 Definitions and Basic Types . .6 3.1.1 Definitions . .6 3.1.2 Basic Types . .9 3.2 Namespace StackwalkerAPI . 10 3.3 Stackwalking Interface . 10 3.3.1 Class Walker . 10 3.3.2 Class Frame . 14 3.4 Accessing Local Variables . 18 3.5 Callback Interface . 19 3.5.1 Default Implementations . 19 3.5.2 Class FrameStepper . 19 3.5.3 Class StepperGroup . 22 3.5.4 Class ProcessState . 24 3.5.5 Class SymbolLookup . 27 4 Callback Interface Default Implementations 27 4.1 Debugger Interface . 28 4.1.1 Class ProcDebug . 29 4.2 FrameSteppers . 31 4.2.1 Class FrameFuncStepper . 31 4.2.2 Class SigHandlerStepper . 32 4.2.3 Class DebugStepper . 33 1 4.2.4 Class AnalysisStepper . 33 4.2.5 Class StepperWanderer . 33 4.2.6 Class BottomOfStackStepper . 33 2 1 Introduction This document describes StackwalkerAPI, an API and library for walking a call stack. The call stack (also known as the run-time stack) is a stack found in a process that contains the currently active stack frames. Each stack frame is a record of an executing function (or function-like object such as a signal handler or system call).
    [Show full text]
  • Procedures & the Stack
    Procedures & The Stack Spring 2016 Procedures & The Stack Announcements ¢ Lab 1 graded § Late days § Extra credit ¢ HW 2 out ¢ Lab 2 prep in section tomorrow § Bring laptops! ¢ Slides HTTP://XKCD.COM/1270/ 1 Procedures & The Stack Spring 2016 Memory & data Roadmap Integers & floats C: Java: Machine code & C x86 assembly car *c = malloc(sizeof(car)); Car c = new Car(); Procedures & stacks c->miles = 100; c.setMiles(100); Arrays & structs c->gals = 17; c.setGals(17); float mpg = get_mpg(c); float mpg = Memory & caches free(c); c.getMPG(); Processes Virtual memory Assembly get_mpg: Memory allocation pushq %rbp Java vs. C language: movq %rsp, %rbp ... popq %rbp ret OS: Machine 0111010000011000 100011010000010000000010 code: 1000100111000010 110000011111101000011111 Computer system: 2 Procedures & The Stack Spring 2016 Mechanisms required for procedures ¢ Passing control P(…) { § To beginning oF procedure code • • § Back to return point y = Q(x); print(y) ¢ Passing data • § Procedure arguments } § Return value ¢ Memory management int Q(int i) § Allocate during procedure execution { § Deallocate upon return int t = 3*i; int v[10]; ¢ All implemented with machine • instructions • § An x86-64 procedure uses only those return v[t]; mechanisms required For that procedure } 3 Procedures & The Stack Spring 2016 Questions to answer about procedures ¢ How do I pass arguments to a procedure? ¢ How do I get a return value from a procedure? ¢ Where do I put local variables? ¢ When a function returns, how does it know where to return? ¢ To answer some of
    [Show full text]
  • The Fourth Paradigm
    ABOUT THE FOURTH PARADIGM This book presents the first broad look at the rapidly emerging field of data- THE FOUR intensive science, with the goal of influencing the worldwide scientific and com- puting research communities and inspiring the next generation of scientists. Increasingly, scientific breakthroughs will be powered by advanced computing capabilities that help researchers manipulate and explore massive datasets. The speed at which any given scientific discipline advances will depend on how well its researchers collaborate with one another, and with technologists, in areas of eScience such as databases, workflow management, visualization, and cloud- computing technologies. This collection of essays expands on the vision of pio- T neering computer scientist Jim Gray for a new, fourth paradigm of discovery based H PARADIGM on data-intensive science and offers insights into how it can be fully realized. “The impact of Jim Gray’s thinking is continuing to get people to think in a new way about how data and software are redefining what it means to do science.” —Bill GaTES “I often tell people working in eScience that they aren’t in this field because they are visionaries or super-intelligent—it’s because they care about science The and they are alive now. It is about technology changing the world, and science taking advantage of it, to do more and do better.” —RhyS FRANCIS, AUSTRALIAN eRESEARCH INFRASTRUCTURE COUNCIL F OURTH “One of the greatest challenges for 21st-century science is how we respond to this new era of data-intensive
    [Show full text]