Giter VIP home page Giter VIP logo

flightrec's People

Contributors

qrdl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

flightrec's Issues

Show char value

For variables of type char (1-byte int) show corresponding character, if it is printable

Get rid of WAL mode

Try different journal modes, maybe even OFF (which required disabling all ROLLBACKs). However if something failed, content of DB doesn't matter as it is not usefule anyway

Consider using prefetch

Consider using _mm_prefetch() for preloading cached and actual page data into CPU cache before comparison

Test engine

Create engine for executing test scripts. Script consists of test cases, each case has some JSONs to send, and can check resulted JSONs, for exact and approximate match (using regex).
If all responses match, case it passed. If all cases in script passed, the script is passed.

Improve mapped_mem() performance

mapped_mem() accounts for about 12%, it just looks for memory in the linked list of regions. Consider changing region storage to either balanced tree (regions added not too often so balancing overhead is negligible) or to array (to improve caching).
Probably sorted array will be the fastest - it has logarithmic complexity and good cache locality

Add support for enum

Support enum type as signed integer (because C standard doesn't specify signedness of enum)

Change DB workers to write to file

currently DB workers write to in-memory database which leads high memory requirements. Consider switching to using file system for temporary DBs, will prgrmas to speed things up (without journal, without sync etc.)

Add proper support for base address

During program execution memory addresses written in DWARF info all may be shifted to 'base address', therefore real addresses of "debug_line" entries, functions and global/static vars need to be shifted.
Calculate the offset in Recorder and store it run DB for use by Examiner.

Test script for running

Script to test:

  • running/continuing forward
  • running/continuing backward
  • step in forward
  • step out forward
  • step over forward
  • step over backward (no other backward steps available by protocol)
  • frames (stack trace)

Add support for conditions in SetBreakpoints request

Evaluate expression, find dependencies from variables, find the steps where variable(s) from expression change value and re-evaluate expression for these steps, until condition is true.
Pay attention that that variable(s) may change its location in memory

Test script for expressions

Add test script for viewng different kind of expressions:

  • struct members
  • array elements
  • result of logical or math operation

Improve mem_process_region() performance

mem_process_region() accounts for almost 29%, look for ways to improve it.
Make sure AVX instruction is used for memory comparison (it is not clear from profiler output).

Create grammar

Create lex/yacc definition for parsing expressions into AST

Test script for breakpoints

Add script for

  • setting breakpoints
  • removing breakpoints
  • stopping at breakpoint when running forward
  • stopping at breakpoint when running backward

Pointer de-aliasing

For pointers that alias other variables (were no allocated using malloc) find the name of the variable the pointer points to, and display in Watch.
Pointer can also point to something inside the variable, like specific struct field or array item.

Test script for custom types

Test custom (typdef'ed) types:

  • aliases for standard types
  • alias for pointer type
  • alias for struct type
  • alias for array type
  • alias for function pointer type

Specify start/end points for tracing

Allow limiting recording from specific point in program (specified as source:line) and/or to specific point in program, to limit the scope of recorded

Test script for variables and scopes

Test script to test

  • list of scopes
  • globals
  • locals
  • signed vars (different sizes)
  • unsigned vars (different sizes)
  • float vars (different sizes)
  • pointer variables (dynamic memory - size, content, before/after allocation, NULL, invalid)
  • pointer variables (pointing to other variable)
  • strings
  • structures
  • arrays
  • function pointers

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.