Program Analysis Tools
|
|
- Sylvia Thomas
- 5 years ago
- Views:
Transcription
1 CMPT 473 Software Quality Assurance Program Analysis Tools Nick Sumner
2 Fixing bugs is costly Why? 2
3 Fixing bugs is costly The longer broken code exists, the more code depends upon it. 3
4 Fixing bugs is costly The longer broken code exists, the more code depends upon it. Once developers have moved on, finding the root cause of a bug is difficult 4
5 Fixing bugs is costly The longer broken code exists, the more code depends upon it. Once developers have moved on, finding the root cause of a bug is difficult Bugs that escape into the wild have real world impact Unintended car acceleration Spacecraft crashes Security leaks... 5
6 Fixing bugs is costly Strategy so far: Test to ensure that expected behaviors seem okay 6
7 Fixing bugs is costly Strategy so far: Test to ensure that expected behaviors seem okay Why do we still have bugs? 7
8 Fixing bugs is costly Strategy so far: Test to ensure that expected behaviors seem okay But we have seen that testing alone is a best effort process: no panacea in adequacy criteria 8
9 Fixing bugs is costly Strategy so far: Test to ensure that expected behaviors seem okay But we have seen that testing alone is a best effort process: no panacea in adequacy criteria Instead we can be proactive: Explicitly search for certain known classes of bugs 9
10 Fixing bugs is costly Strategy so far: Test to ensure that expected behaviors seem okay But we have seen that testing alone is a best effort process: no panacea in adequacy criteria Instead we can be proactive: Explicitly search for certain known classes of bugs Guard against certain classes of bugs 10
11 Fixing bugs is costly Strategy so far: Test to ensure that expected behaviors seem okay But we have seen that testing alone is a best effort process: no panacea in adequacy criteria Instead we can be proactive: Explicitly search for certain known classes of bugs Guard against certain classes of bugs Even prove that certain bugs are not present 11
12 Fixing bugs is costly Strategy so far: Test to ensure that expected behaviors seem okay But we have seen that testing alone is a best effort process: no panacea in adequacy criteria Instead we can be proactive: Explicitly search for certain known classes of bugs Guard against certain classes of bugs Even prove that certain bugs are not present Identify bad styles that may lead to bugs 12
13 How can we do this? Increasingly pervasive approach is to use program analysis 13
14 How can we do this? Increasingly pervasive approach is to use program analysis Set of tools/techniques that allow computers to automatically reason about the behavior of programs 14
15 How can we do this? Increasingly pervasive approach is to use program analysis Set of tools/techniques that allow computers to automatically reason about the behavior of programs Push the burden of understanding programs onto computers 15
16 How can we do this? Increasingly pervasive approach is to use program analysis Set of tools/techniques that allow computers to automatically reason about the behavior of programs Push the burden of understanding programs onto computers People have trouble with repetitive, subtle behavior 16
17 How can we do this? Increasingly pervasive approach is to use program analysis Set of tools/techniques that allow computers to automatically reason about the behavior of programs Push the burden of understanding programs onto computers People have trouble with repetitive, subtle behavior Computers excel at it 17
18 For example if ((err = update(&ctx, &server))!= 0) goto fail; if ((err = update(&ctx, ¶ms))!= 0) goto fail; goto fail; if ((err = final(&ctx, &hashout))!= 0) goto fail; 18
19 For example if ((err = update(&ctx, &server))!= 0) goto fail; if ((err = update(&ctx, ¶ms))!= 0) goto fail; goto fail; if ((err = final(&ctx, &hashout))!= 0) goto fail; Why is this difficult for people to catch? 19
20 For example if ((err = update(&ctx, &server))!= 0) goto fail; if ((err = update(&ctx, ¶ms))!= 0) goto fail; goto fail; if ((err = final(&ctx, &hashout))!= 0) goto fail; Why is this difficult for people to catch? Why should a computer be able to find it? 20
21 For example if ((err = update(&ctx, &server))!= 0) goto fail; if ((err = update(&ctx, ¶ms))!= 0) goto fail; goto fail; if ((err = final(&ctx, &hashout))!= 0) goto fail; There are bugs that people can miss but that computers can easily find. Rules can determine what is buggy or not 21
22 For example if ((err = update(&ctx, &server))!= 0) goto fail; if ((err = update(&ctx, ¶ms))!= 0) goto fail; goto fail; if ((err = final(&ctx, &hashout))!= 0) goto fail; There are bugs that people can miss but that computers can easily find. Rules can determine what is buggy or not BUG: Both branches of the if statement have the same target 22
23 Two main categories of tools Dynamic analysis tools Run the program and reason about that single execution 23
24 Two main categories of tools Dynamic analysis tools Run the program and reason about that single execution Best at helping explain bugs that are already occurring 24
25 Two main categories of tools Dynamic analysis tools Run the program and reason about that single execution Best at helping explain bugs that are already occurring Static analysis tools Examine the source code or binary and reason about all possible executions 25
26 Two main categories of tools Dynamic analysis tools Run the program and reason about that single execution Best at helping explain bugs that are already occurring Static analysis tools Examine the source code or binary and reason about all possible executions Best at identifying bugs that haven't struck yet but might in the future 26
27 Two main categories of tools Neither approach is perfect 27
28 Two main categories of tools Neither approach is perfect What are the limitations of dynamic approaches? 28
29 Two main categories of tools Neither approach is perfect What are the limitations of dynamic approaches? What are the limitations of static approaches? This one is tougher... 29
30 Two main categories of tools Neither approach is perfect Dynamic approaches require a test case to analyze 30
31 Two main categories of tools Neither approach is perfect Dynamic approaches require a test case to analyze Static approaches are limited by the halting problem The halting problem strikes again... 31
32 Two main categories of tools Neither approach is perfect Dynamic approaches require a test case to analyze Static approaches are limited by the halting problem The results are imperfect False positives Warnings about bugs that don't actually exist 32
33 Two main categories of tools Neither approach is perfect Dynamic approaches require a test case to analyze Static approaches are limited by the halting problem The results are imperfect False positives Warnings about bugs that don't actually exist False negatives Missing warnings for bugs that do exist 33
34 Two main categories of tools Neither approach is perfect Dynamic approaches require a test case to analyze Static approaches are limited by the halting problem The results are imperfect False positives Warnings about bugs that don't actually exist False negatives Missing warnings for bugs that do exist Learning how to use these tools effectively can take practice 34
35 But what can they actually do? You've already seen the PVS-Studio examples Was it a static or dynamic tool? 35
36 But what can they actually do? You've already seen the PVS-Studio examples Was it a static or dynamic tool? Read for Wednesday 36
37 But what can they actually do? You've already seen the PVS-Studio examples Many tools are freely available: *Lint FindBugs Clang Static Analyzer ESC/Java Valgrind Clang Sanitizers (and more on the course web page) 37
38 Taking a look at Valgrind Valgrind Uses dynamic binary instrumentation 38
39 Taking a look at Valgrind Valgrind Uses dynamic binary instrumentation Modifies an already compiled binary to check for errors 39
40 Taking a look at Valgrind Valgrind Uses dynamic binary instrumentation Modifies an already compiled binary to check for errors Many built in tools Memcheck memory safety analyses Cachegrind performance analyses Helgrind & DRD Thread safety analyses 40
41 Taking a look at Valgrind Valgrind Uses dynamic binary instrumentation Modifies an already compiled binary to check for errors Many built in tools Memcheck memory safety analyses Cachegrind performance analyses Helgrind & DRD Thread safety analyses Used extensively in the real world 41
42 Taking a look at Valgrind Valgrind Uses dynamic binary instrumentation Modifies an already compiled binary to check for errors Many built in tools Memcheck memory safety analyses Cachegrind performance analyses Helgrind & DRD Thread safety analyses Used extensively in the real world Does not work for Java or Python by default. Why?! 42
43 Taking a look at clang sanitizers Clang sanitizers Use compile time instrumentation 43
44 Taking a look at clang sanitizers Clang sanitizers Use compile time instrumentation Rewrites the program once to perform analyses every time it executes Able to exploit source level information 44
45 Taking a look at clang sanitizers Clang sanitizers Use compile time instrumentation Rewrites the program once to perform analyses every time it executes Able to exploit source level information Many built in tools AddressSanitizer Address safety analysis MemorySanitizer Defined value analysis TheadSanitizer Thread safety analysis Undefined Behavior Just what it sounds like (which is?) 45
46 Taking a look at clang sanitizers Clang sanitizers Use compile time instrumentation Rewrites the program once to perform analyses every time it executes Able to exploit source level information Many built in tools AddressSanitizer Address safety analysis MemorySanitizer Defined value analysis TheadSanitizer Thread safety analysis Undefined Behavior Just what it sounds like Used extensively at google (chrome,...) 46
47 So far... We've looked at dynamic analysis tools. False positives are less common False negatives are inherent 47
48 So far... We've looked at dynamic analysis tools. False positives are less common False negatives are inherent What about the static analysis tools? 48
49 Clang static analyzer 'scan-build' Integrates into the build process 49
50 Clang static analyzer 'scan-build' Integrates into the build process Uses abstract interpretation to simulate many different paths through the program at once 50
51 Clang static analyzer 'scan-build' Integrates into the build process Uses abstract interpretation to simulate many different paths through the program at once Generates summaries showing exactly how errors may occur 51
52 Clang static analyzer 'scan-build' Integrates into the build process Uses abstract interpretation to simulate many different paths through the program at once Generates summaries showing exactly how errors may occur Many automatically recognized bugs And a plug-in system for recognizing new ones. 52
53 Clang static analyzer 'scan-build' Integrates into the build process Uses abstract interpretation to simulate many different paths through the program at once Generates summaries showing exactly how errors may occur Many automatically recognized bugs And a plug-in system for recognizing new ones. Poorly organized & asserted code yields many errors 53
54 FindBugs FindBugs Static analysis of Java bytecode 54
55 FindBugs FindBugs Static analysis of Java bytecode Uses several techniques to balance speed, precision, false positives, and false negatives 55
56 FindBugs FindBugs Static analysis of Java bytecode Uses several techniques to balance speed, precision, false positives, and false negatives Emphasis on pragmatic, actionable results Massive variety of bugs & code smells detected 56
57 FindBugs FindBugs Static analysis of Java bytecode Uses several techniques to balance speed, precision, false positives, and false negatives Emphasis on pragmatic, actionable results Massive variety of bugs & code smells detected I would argue that a Java project not using FindBugs is a broken project! 57
58 Dealing With False Information False negatives are unfortunate, but no extra burden 58
59 Dealing With False Information False negatives are unfortunate, but no extra burden False positives can waste developer time Like chasing ghosts through the source code You must eventually figure out that the ghost isn't real 59
60 Dealing With False Information False negatives are unfortunate, but no extra burden False positives can waste developer time Like chasing ghosts through the source code Want to determine whether warnings are real This takes a lot of work & happens every time. Can we do better? 60
61 Dealing With False Information False negatives are unfortunate, but no extra burden False positives can waste developer time Like chasing ghosts through the source code Want to determine whether warnings are real Avoid chasing this same ghost in the future! 61
62 Dealing With False Information False negatives are unfortunate, but no extra burden False positives can waste developer time Like chasing ghosts through the source code Want to determine whether warnings are real Avoid chasing this same ghost in the future! Blacklisting & suppression allows us to remember false positives & prevent them in the future... [DEMO] 62
63 Verification The tools so far try to look for bugs They can still miss them [Clang SA DEMO] 63
64 Verification The tools so far try to look for bugs They can still miss them [Clang SA DEMO] In contrast, we can try to use verification to prove the absence of (certain types of) bugs. Have you seen / heard of such tools before? 64
65 Verification The tools so far try to look for bugs They can still miss them [Clang SA DEMO] In contrast, we can try to use verification to prove the absence of (certain types of) bugs. [CBMC DEMO] 65
66 Verification The tools so far try to look for bugs They can still miss them [Clang SA DEMO] In contrast, we can try to use verification to prove the absence of (certain types of) bugs. [CBMC DEMO] Why didn't we just do this from the beginning? Any ideas? 66
67 Verification The tools so far try to look for bugs They can still miss them [Clang SA DEMO] In contrast, we can try to use verification to prove the absence of (certain types of) bugs. [CBMC DEMO] Why didn't we just do this from the beginning? Historically more difficult to use 67
68 Verification The tools so far try to look for bugs They can still miss them [Clang SA DEMO] In contrast, we can try to use verification to prove the absence of (certain types of) bugs. [CBMC DEMO] Why didn't we just do this from the beginning? Historically more difficult to use Historically more complex more overhead 68
69 Verification The tools so far try to look for bugs They can still miss them [Clang SA DEMO] In contrast, we can try to use verification to prove the absence of (certain types of) bugs. [CBMC DEMO] Why didn't we just do this from the beginning? Historically more difficult to use Historically more complex more overhead Still approximate, at some level (time, space, ) They'll still miss bugs in the end 69
70 Verification The tools so far try to look for bugs They can still miss them [Clang SA DEMO] In contrast, we can try to use verification to prove the absence of (certain types of) bugs. [CBMC DEMO] Why didn't we just do this from the beginning? Historically more difficult to use But they are getting better! Historically Used extensively more complex in safety more critical overhead systems. Still approximate, at some level (time, space, ) They'll still miss bugs in the end 70
Dynamic code analysis tools
Dynamic code analysis tools Stewart Martin-Haugh (STFC RAL) Berkeley Software Technical Interchange meeting Stewart Martin-Haugh (STFC RAL) Dynamic code analysis tools 1 / 16 Overview Introduction Sanitizer
More informationStatic Analysis and Bugfinding
Static Analysis and Bugfinding Alex Kantchelian 09/12/2011 Last week we talked about runtime checking methods: tools for detecting vulnerabilities being exploited in deployment. So far, these tools have
More informationTesting. ECE/CS 5780/6780: Embedded System Design. Why is testing so hard? Why do testing?
Testing ECE/CS 5780/6780: Embedded System Design Scott R. Little Lecture 24: Introduction to Software Testing and Verification What is software testing? Running a program in order to find bugs (faults,
More informationCS2141 Software Development using C/C++ Debugging
CS2141 Software Development using C/C++ Debugging Debugging Tips Examine the most recent change Error likely in, or exposed by, code most recently added Developing code incrementally and testing along
More informationBugs in software. Using Static Analysis to Find Bugs. David Hovemeyer
Bugs in software Programmers are smart people We have good techniques for finding bugs early: Unit testing, pair programming, code inspections So, most bugs should be subtle, and require sophisticated
More informationSimple Overflow. #include <stdio.h> int main(void){ unsigned int num = 0xffffffff;
Simple Overflow 1 #include int main(void){ unsigned int num = 0xffffffff; printf("num is %d bits long\n", sizeof(num) * 8); printf("num = 0x%x\n", num); printf("num + 1 = 0x%x\n", num + 1); }
More informationDebugging and Profiling
Debugging and Profiling Dr. Axel Kohlmeyer Senior Scientific Computing Expert Information and Telecommunication Section The Abdus Salam International Centre for Theoretical Physics http://sites.google.com/site/akohlmey/
More informationC/C++ toolchain. Static and dynamic code analysis. Karel Kubíček. Masaryk University. Brno, Czech Republic
C/C++ toolchain Static and dynamic code analysis Karel Kubíček Masaryk University Brno, Czech Republic April 20, 2018 Questions Who uses C/C++? Karel Kubíček C/C++ toolchain April 20, 2018 2 / 12 Questions
More informationLow level security. Andrew Ruef
Low level security Andrew Ruef What s going on Stuff is getting hacked all the time We re writing tons of software Often with little regard to reliability let alone security The regulatory environment
More informationDebugging with gdb and valgrind
Debugging with gdb and valgrind Dr. Axel Kohlmeyer Associate Dean for Scientific Computing, CST Associate Director, Institute for Computational Science Assistant Vice President for High-Performance Computing
More informationToday Program Analysis for finding bugs, especially security bugs problem specification motivation approaches remaining issues
Finding Bugs Last time Run-time reordering transformations Today Program Analysis for finding bugs, especially security bugs problem specification motivation approaches remaining issues CS553 Lecture Finding
More informationPerformance of Non-Moving Garbage Collectors. Hans-J. Boehm HP Labs
Performance of Non-Moving Garbage Collectors Hans-J. Boehm HP Labs Why Use (Tracing) Garbage Collection to Reclaim Program Memory? Increasingly common Java, C#, Scheme, Python, ML,... gcc, w3m, emacs,
More informationLightweight Verification of Array Indexing
Lightweight Verification of Array Indexing Martin Kellogg*, Vlastimil Dort**, Suzanne Millstein*, Michael D. Ernst* * University of Washington, Seattle ** Charles University, Prague The problem: unsafe
More informationESC/Java2 extended static checking for Java Erik Poll Radboud University Nijmegen
ESC/Java2 extended static checking for Java Erik Poll Radboud University Nijmegen Erik Poll - JML p.1/19 Extended static checker for Java ESC/Java by Rustan Leino et.al. Extension ESC/Java2 by David Cok
More informationA Serializability Violation Detector for Shared-Memory Server Programs
A Serializability Violation Detector for Shared-Memory Server Programs Min Xu Rastislav Bodík Mark Hill University of Wisconsin Madison University of California, Berkeley Serializability Violation Detector:
More informationPrinciples of Software Construction: Objects, Design, and Concurrency (Part 2: Designing (Sub )Systems)
Principles of Software Construction: Objects, Design, and Concurrency (Part 2: Designing (Sub )Systems) More Analysis for Functional Correctness Jonathan Aldrich Charlie Garrod School of Computer Science
More informationAnalysis Tool Project
Tool Overview The tool we chose to analyze was the Java static analysis tool FindBugs (http://findbugs.sourceforge.net/). FindBugs is A framework for writing static analyses Developed at the University
More informationDEBUGGING: DYNAMIC PROGRAM ANALYSIS
DEBUGGING: DYNAMIC PROGRAM ANALYSIS WS 2017/2018 Martina Seidl Institute for Formal Models and Verification System Invariants properties of a program must hold over the entire run: integrity of data no
More informationWelcome to Software Analysis and Testing.
Welcome to Software Analysis and Testing. In this course, we will be diving deep into the theory and practice of software analysis, which lies at the heart of many software development processes such as
More informationBug Hunting and Static Analysis
Bug Hunting and Red Hat Ondřej Vašík and Petr Müller 2011-02-11 Abstract Basic overview of common error patterns in C/C++, few words about defensive programming
More informationAn Introduction to Python (TEJ3M & TEJ4M)
An Introduction to Python (TEJ3M & TEJ4M) What is a Programming Language? A high-level language is a programming language that enables a programmer to write programs that are more or less independent of
More informationTesting. Prof. Clarkson Fall Today s music: Wrecking Ball by Miley Cyrus
Testing Prof. Clarkson Fall 2017 Today s music: Wrecking Ball by Miley Cyrus Review Previously in 3110: Modules Specification (functions, modules) Today: Validation Testing Black box Glass box Randomized
More informationDebugging. Erwan Demairy Dream
1 Debugging Erwan Demairy Dream 2 Where are we? Tools Requirements Global architecture UML Local architecture Implementation Compilation Link Editor Compiler Linker Tests Debug Profiling Build IDE Debugger
More informationFormal Methods of Software Design, Eric Hehner, segment 24 page 1 out of 5
Formal Methods of Software Design, Eric Hehner, segment 24 page 1 out of 5 [talking head] This lecture we study theory design and implementation. Programmers have two roles to play here. In one role, they
More informationStatic Program Analysis Part 1 the TIP language
Static Program Analysis Part 1 the TIP language http://cs.au.dk/~amoeller/spa/ Anders Møller & Michael I. Schwartzbach Computer Science, Aarhus University Questions about programs Does the program terminate
More informationLaboratorio di Tecnologie dell'informazione
Laboratorio di Tecnologie dell'informazione Ing. Marco Bertini marco.bertini@unifi.it http://www.micc.unifi.it/bertini/ Code testing: techniques and tools Testing can show the presence of errors, but not
More informationAn Eclipse Plug-in for Model Checking
An Eclipse Plug-in for Model Checking Dirk Beyer, Thomas A. Henzinger, Ranjit Jhala Electrical Engineering and Computer Sciences University of California, Berkeley, USA Rupak Majumdar Computer Science
More informationIn this Lecture you will Learn: Testing in Software Development Process. What is Software Testing. Static Testing vs.
In this Lecture you will Learn: Testing in Software Development Process Examine the verification and validation activities in software development process stage by stage Introduce some basic concepts of
More informationvalgrind overview: runtime memory checker and a bit more What can we do with it?
Valgrind overview: Runtime memory checker and a bit more... What can we do with it? MLUG Mar 30, 2013 The problem When do we start thinking of weird bug in a program? The problem When do we start thinking
More informationFinal Exam CS164, Fall 2007 Dec 18, 2007
P a g e 1 Final Exam CS164, Fall 2007 Dec 18, 2007 Please read all instructions (including these) carefully. Write your name, login, and SID. No electronic devices are allowed, including cell phones used
More informationStatic Vulnerability Analysis
Static Vulnerability Analysis Static Vulnerability Detection helps in finding vulnerabilities in code that can be extracted by malicious input. There are different static analysis tools for different kinds
More informationSecure Programming Lecture 13: Static Analysis
Secure Programming Lecture 13: Static Analysis David Aspinall 10th March 2014 Outline Overview Vulnerabilities and analysis Using static analysis Simple static analysis tasks Type checking Style checking
More informationCSCE 548 Building Secure Software Software Analysis Basics
CSCE 548 Building Secure Software Software Analysis Basics Professor Lisa Luo Spring 2018 Previous Class Ø Android Background Ø Two Android Security Problems: 1. Android App Repackaging o Very easy to
More informationLectures 20, 21: Axiomatic Semantics
Lectures 20, 21: Axiomatic Semantics Polyvios Pratikakis Computer Science Department, University of Crete Type Systems and Static Analysis Based on slides by George Necula Pratikakis (CSD) Axiomatic Semantics
More informationVulnerabilities and analysis. Simple static analysis tasks Type checking Style checking
Outline Recap Secure Programming Lecture 13: Static Analysis David Aspinall 10th March 2014 Overview Vulnerabilities and analysis Using static analysis Simple static analysis tasks Type checking Style
More informationW4118: concurrency error. Instructor: Junfeng Yang
W4118: concurrency error Instructor: Junfeng Yang Goals Identify patterns of concurrency errors (so you can avoid them in your code) Learn techniques to detect concurrency errors (so you can apply these
More informationRecap. Advanced static analysis jobs. Secure Programming Lecture 14: Static Analysis II. Program understanding tools
Recap Advanced static analysis jobs Secure Programming Lecture 14: Static Analysis II David Aspinall 17th March 2017 We re looking at principles and tools for ensuring software security. This lecture looks
More informationMITOCW watch?v=9h6muyzjms0
MITOCW watch?v=9h6muyzjms0 The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources for free. To
More informationManaged runtimes & garbage collection. CSE 6341 Some slides by Kathryn McKinley
Managed runtimes & garbage collection CSE 6341 Some slides by Kathryn McKinley 1 Managed runtimes Advantages? Disadvantages? 2 Managed runtimes Advantages? Reliability Security Portability Performance?
More informationManaged runtimes & garbage collection
Managed runtimes Advantages? Managed runtimes & garbage collection CSE 631 Some slides by Kathryn McKinley Disadvantages? 1 2 Managed runtimes Portability (& performance) Advantages? Reliability Security
More informationDispatch techniques and closure representations
Dispatch techniques and closure representations Jan Midtgaard Week 3, Virtual Machines for Programming Languages Aarhus University, Q4-2011 Dispatch techniques Efficient bytecode interpreters (1/2) The
More informationFuzzing AOSP. AOSP for the Masses. Attack Android Right Out of the Box Dan Austin, Google. Dan Austin Google Android SDL Research Team
Fuzzing AOSP For the Masses AOSP for the Masses Attack Android Right Out of the Box Dan Austin, Google Dan Austin Google Android SDL Research Team Exploitation: Find the Needle Needles are Interesting
More informationTesting Exceptions with Enforcer
Testing Exceptions with Enforcer Cyrille Artho February 23, 2010 National Institute of Advanced Industrial Science and Technology (AIST), Research Center for Information Security (RCIS) Abstract Java library
More information05. SINGLETON PATTERN. One of a Kind Objects
BIM492 DESIGN PATTERNS 05. SINGLETON PATTERN One of a Kind Objects Developer: What use is that? Guru: There are many objects we only need one of: thread pools, caches, dialog boxes, objects that handle
More informationAdvances in Programming Languages
O T Y H Advances in Programming Languages APL8: ESC/Java2 David Aspinall (including slides by Ian Stark and material adapted from ESC/Java2 tutorial by David Cok, Joe Kiniry and Erik Poll) School of Informatics
More informationComputer Components. Software{ User Programs. Operating System. Hardware
Computer Components Software{ User Programs Operating System Hardware What are Programs? Programs provide instructions for computers Similar to giving directions to a person who is trying to get from point
More informationSkill 1: Multiplying Polynomials
CS103 Spring 2018 Mathematical Prerequisites Although CS103 is primarily a math class, this course does not require any higher math as a prerequisite. The most advanced level of mathematics you'll need
More informationTesting, Debugging, Program Verification
Testing, Debugging, Program Verification Debugging Programs, Part II Wolfgang Ahrendt & Vladimir Klebanov & Moa Johansson & Gabriele Paganelli 14 November 2012 TDV: Debugging II /GU 2011-11-09 1 / 32 Today
More informationContents. What's New. Dropbox / OneDrive / Google drive Warning! A couple quick reminders:
Campground Master Contents 1 Contents A couple quick reminders: Make Backups! It's so sad when we hear from someone whose computer has crashed and they have no backup of their data to restore from. It's
More informationEraser: Dynamic Data Race Detection
Eraser: Dynamic Data Race Detection 15-712 Topics overview Concurrency and race detection Framework: dynamic, static Sound vs. unsound Tools, generally: Binary rewriting (ATOM, Etch,...) and analysis (BAP,
More informationLaboratorio di Tecnologie dell'informazione
Laboratorio di Tecnologie dell'informazione Ing. Marco Bertini marco.bertini@unifi.it http://www.micc.unifi.it/bertini/ Code testing: techniques and tools Testing can show the presence of errors, but not
More informationCSE 403: Software Engineering, Fall courses.cs.washington.edu/courses/cse403/16au/ Static Analysis. Emina Torlak
CSE 403: Software Engineering, Fall 2016 courses.cs.washington.edu/courses/cse403/16au/ Static Analysis Emina Torlak emina@cs.washington.edu Outline What is static analysis? How does it work? Free and
More informationThe Go Programming Language. Frank Roberts
The Go Programming Language Frank Roberts frank.roberts@uky.edu - C++ (1983), Java (1995), Python (1991): not modern - Java is 18 years old; how has computing changed in 10? - multi/many core - web programming
More informationMemcheck vs Optimising Compilers: keeping the false positive rate under control
Memcheck vs Optimising Compilers: keeping the false positive rate under control Julian Seward, jseward@acm.org 4 February 2018. FOSDEM. Brussels. Motivation Memcheck checks Whether memory accesses are
More informationStatic program checking and verification
Chair of Software Engineering Software Engineering Prof. Dr. Bertrand Meyer March 2007 June 2007 Slides: Based on KSE06 With kind permission of Peter Müller Static program checking and verification Correctness
More informationA Gentle Introduction to Program Analysis
A Gentle Introduction to Program Analysis Işıl Dillig University of Texas, Austin January 21, 2014 Programming Languages Mentoring Workshop 1 / 24 What is Program Analysis? Very broad topic, but generally
More informationUnit Testing & Testability
CMPT 473 Software Quality Assurance Unit Testing & Testability Nick Sumner - Fall 2014 Levels of Testing Recall that we discussed different levels of testing for test planning: Unit Tests Integration Tests
More informationVerification and Validation
2014-2015 Verification and Validation Part I : Extended Static Analysis Burkhart Wolff Département Informatique Université Paris-Sud / Orsay Static Analysis! We have seen test methods, and proof methods.
More informationCreating User-Friendly Exploits
1 Creating User-Friendly Exploits Skylar Rampersaud skylar@immunityinc.com Security Research 2 What is a User-Friendly Exploit? An exploit that causes no distress to the user of the exploited program i.e.,
More informationAdvances in Programming Languages
T O Y H Advances in Programming Languages APL14: Practical tools for Java Correctness David Aspinall (slides originally by Ian Stark) School of Informatics The University of Edinburgh Friday 12 November
More informationSystems software design. Software build configurations; Debugging, profiling & Quality Assurance tools
Systems software design Software build configurations; Debugging, profiling & Quality Assurance tools Who are we? Krzysztof Kąkol Software Developer Jarosław Świniarski Software Developer Presentation
More informationPATTERN MAKING FOR THE PHOENIX HOOP
PATTERN MAKING FOR THE PHOENIX HOOP This tutorial will walk you through making the most basic of pattern for the Phoenix Hoop and try to explain how the hoop interprets them. If you get confused, don t
More informationJava Coding 3. Over & over again!
Java Coding 3 Over & over again! Repetition Java repetition statements while (condition) statement; do statement; while (condition); where for ( init; condition; update) statement; statement is any Java
More informationCptS 360 (System Programming) Unit 4: Debugging
CptS 360 (System Programming) Unit 4: Debugging Bob Lewis School of Engineering and Applied Sciences Washington State University Spring, 2018 Motivation You re probably going to spend most of your code
More informationA PROGRAM IS A SEQUENCE of instructions that a computer can execute to
A PROGRAM IS A SEQUENCE of instructions that a computer can execute to perform some task. A simple enough idea, but for the computer to make any use of the instructions, they must be written in a form
More informationIntegrated Software Environment. Part 2
Integrated Software Environment Part 2 Operating Systems An operating system is the most important software that runs on a computer. It manages the computer's memory, processes, and all of its software
More informationStatic verification of program running time
Static verification of program running time CIS 673 course project report Caleb Stanford December 2016 Contents 1 Introduction 2 1.1 Total Correctness is Not Enough.................................. 2
More informationClearSpeed Visual Profiler
ClearSpeed Visual Profiler Copyright 2007 ClearSpeed Technology plc. All rights reserved. 12 November 2007 www.clearspeed.com 1 Profiling Application Code Why use a profiler? Program analysis tools are
More informationProgram verification. Generalities about software Verification Model Checking. September 20, 2016
Program verification Generalities about software Verification Model Checking Laure Gonnord David Monniaux September 20, 2016 1 / 43 The teaching staff Laure Gonnord, associate professor, LIP laboratory,
More informationTesting! The material for this lecture is drawn, in part, from! The Practice of Programming (Kernighan & Pike) Chapter 6!
Testing The material for this lecture is drawn, in part, from The Practice of Programming (Kernighan & Pike) Chapter 6 1 Words from the Wise On two occasions I have been asked [by members of Parliament],
More informationESC/Java extended static checking for Java Erik Poll, Joe Kiniry, David Cok University of Nijmegen; Eastman Kodak Company
ESC/Java extended static checking for Java Erik Poll, Joe Kiniry, David Cok University of Nijmegen; Eastman Kodak Company Erik Poll - JML p.1/?? ESC/Java Extended static checker by Rustan Leino et.al.
More informationChapter 1 Getting Started
Chapter 1 Getting Started The C# class Just like all object oriented programming languages, C# supports the concept of a class. A class is a little like a data structure in that it aggregates different
More informationGrigore Rosu Founder, President and CEO Professor of Computer Science, University of Illinois
https://runtimeverification.com Grigore Rosu Founder, President and CEO Professor of Computer Science, University of Illinois Runtime Verification Company Licensed by University of Illinois at Urbana-Champaign
More informationCache Profiling with Callgrind
Center for Information Services and High Performance Computing (ZIH) Cache Profiling with Callgrind Linux/x86 Performance Practical, 17.06.2009 Zellescher Weg 12 Willers-Bau A106 Tel. +49 351-463 - 31945
More informationsimplefun Semantics 1 The SimpleFUN Abstract Syntax 2 Semantics
simplefun Semantics 1 The SimpleFUN Abstract Syntax We include the abstract syntax here for easy reference when studying the domains and transition rules in the following sections. There is one minor change
More information18-642: Code Style for Compilers
18-642: Code Style for Compilers 9/6/2018 2017-2018 Philip Koopman Programming can be fun, so can cryptography; however they should not be combined. Kreitzberg and Shneiderman 2017-2018 Philip Koopman
More informationImproving Linux development with better tools
Improving Linux development with better tools Andi Kleen Oct 2013 Intel Corporation ak@linux.intel.com Linux complexity growing Source lines in Linux kernel All source code 16.5 16 15.5 M-LOC 15 14.5 14
More informationprintf( Please enter another number: ); scanf( %d, &num2);
CIT 593 Intro to Computer Systems Lecture #13 (11/1/12) Now that we've looked at how an assembly language program runs on a computer, we're ready to move up a level and start working with more powerful
More informationAPPENDIX B. Fortran Hints
APPENDIX B Fortran Hints This appix contains hints on how to find errors in your programs, and how to avoid some common Fortran errors in the first place. The basics on how to invoke the Fortran compiler
More informationlogistics: ROP assignment
bug-finding 1 logistics: ROP assignment 2 2013 memory safety landscape 3 2013 memory safety landscape 4 different design points memory safety most extreme disallow out of bounds usually even making out-of-bounds
More informationCERT C++ COMPLIANCE ENFORCEMENT
CERT C++ COMPLIANCE ENFORCEMENT AUTOMATED SOURCE CODE ANALYSIS TO MAINTAIN COMPLIANCE SIMPLIFY AND STREAMLINE CERT C++ COMPLIANCE The CERT C++ compliance module reports on dataflow problems, software defects,
More informationSecure Programming Lecture 13: Code Review and Static Analysis
Secure Programming Lecture 13: Code Review and Static Analysis David Aspinall 4th March 2016 Outline Overview Vulnerabilities and analysis Using static analysis Simple static analysis tasks Type checking
More informationPrinciples of Software Construction: Objects, Design and Concurrency. Static Analysis. toad Spring 2013
Principles of Software Construction: Objects, Design and Concurrency Static Analysis 15-214 toad Spring 2013 Christian Kästner Charlie Garrod School of Computer Science 2012-13 C Garrod, C Kästner, J Aldrich,
More information18-642: Code Style for Compilers
18-642: Code Style for Compilers 9/25/2017 1 Anti-Patterns: Coding Style: Language Use Code compiles with warnings Warnings are turned off or over-ridden Insufficient warning level set Language safety
More informationControl Structures. Code can be purely arithmetic assignments. At some point we will need some kind of control or decision making process to occur
Control Structures Code can be purely arithmetic assignments At some point we will need some kind of control or decision making process to occur C uses the if keyword as part of it s control structure
More informationProgram Verification! Goals of this Lecture! Words from the Wise! Testing!
Words from the Wise Testing On two occasions I have been asked [by members of Parliament], Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out? I am not able rightly
More informationCopyright 2015 MathEmbedded Ltd.r. Finding security vulnerabilities by fuzzing and dynamic code analysis
Finding security vulnerabilities by fuzzing and dynamic code analysis Security Vulnerabilities Top code security vulnerabilities don t change much: Security Vulnerabilities Top code security vulnerabilities
More informationHonours/Master/PhD Thesis Projects Supervised by Dr. Yulei Sui
Honours/Master/PhD Thesis Projects Supervised by Dr. Yulei Sui Projects 1 Information flow analysis for mobile applications 2 2 Machine-learning-guide typestate analysis for UAF vulnerabilities 3 3 Preventing
More informationComputer Components. Software{ User Programs. Operating System. Hardware
Computer Components Software{ User Programs Operating System Hardware What are Programs? Programs provide instructions for computers Similar to giving directions to a person who is trying to get from point
More informationOvercoming Stagefright Integer Overflow Protections in Android
Overcoming Stagefright Integer Overflow Protections in Android Dan Austin (oblivion@google.com) May 2016 Agenda $ whoami Stagefright Sanitizers Sanitizers in Practice The Future $ whoami $ whoami Dan Austin
More informationUsing Static Code Analysis to Find Bugs Before They Become Failures
Using Static Code Analysis to Find Bugs Before They Become Failures Presented by Brian Walker Senior Software Engineer, Video Product Line, Tektronix, Inc. Pacific Northwest Software Quality Conference,
More informationCache Performance Analysis with Callgrind and KCachegrind
Cache Performance Analysis with Callgrind and KCachegrind Parallel Performance Analysis Course, 31 October, 2010 King Abdullah University of Science and Technology, Saudi Arabia Josef Weidendorfer Computer
More informationSoftware Engineering Testing and Debugging Debugging
Software Engineering Testing and Debugging Debugging Prof. Dr. Peter Thiemann Universität Freiburg 13.07.2009 Today s Topic Last Lecture Bug tracking Program control Design for Debugging Input simplification
More informationMaking things work as expected
Making things work as expected System Programming Lab Maksym Planeta Björn Döbel 20.09.2018 Table of Contents Introduction Hands-on Tracing made easy Dynamic intervention Compiler-based helpers The GNU
More informationToday s Topic. Software Engineering Testing and Debugging Debugging. Today s Topic. The Main Steps in Systematic Debugging
Today s Topic Software Engineering Testing and Debugging Debugging Prof. Dr. Peter Thiemann Last Lecture Bug tracking Program control Design for Debugging Input simplification Universität Freiburg 22.06.2011
More informationME 365 EXPERIMENT 3 INTRODUCTION TO LABVIEW
ME 365 EXPERIMENT 3 INTRODUCTION TO LABVIEW Objectives: The goal of this exercise is to introduce the Laboratory Virtual Instrument Engineering Workbench, or LabVIEW software. LabVIEW is the primary software
More informationCSCI-1200 Data Structures Spring 2016 Lecture 6 Pointers & Dynamic Memory
Announcements CSCI-1200 Data Structures Spring 2016 Lecture 6 Pointers & Dynamic Memory There will be no lecture on Tuesday, Feb. 16. Prof. Thompson s office hours are canceled for Monday, Feb. 15. Prof.
More informationTesting! The material for this lecture is drawn, in part, from! The Practice of Programming (Kernighan & Pike) Chapter 6!
Testing The material for this lecture is drawn, in part, from The Practice of Programming (Kernighan & Pike) Chapter 6 1 Goals of this Lecture Help you learn about: Internal testing External testing General
More informationWith Unit Tests Like These, Who Needs Static Typing? Julian Orbach
With Unit Tests Like These, Who Needs Static Typing? Julian Orbach Contents Claim: Static typing bad; unit-testing good. Experiment Method, Results, Conclusions Look at the Feedback But first... some definitions.
More informationIdentifying Ad-hoc Synchronization for Enhanced Race Detection
Identifying Ad-hoc Synchronization for Enhanced Race Detection IPD Tichy Lehrstuhl für Programmiersysteme IPDPS 20 April, 2010 Ali Jannesari / Walter F. Tichy KIT die Kooperation von Forschungszentrum
More information