qrdl / flightrec Goto Github PK
View Code? Open in Web Editor NEWFlight Recorder allows to record client program execution and examine it later
License: GNU Affero General Public License v3.0
Flight Recorder allows to record client program execution and examine it later
License: GNU Affero General Public License v3.0
It can possible improve performance
For variables of type char (1-byte int) show corresponding character, if it is printable
Add support for unions just like for structs
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
Currently only memory vars supported, add register vars
Consider using _mm_prefetch() for preloading cached and actual page data into CPU cache before comparison
Build process must run automated tests
Evaluate expression received and return result to debugger front
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.
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
Pointer vars with NULL value don't displayed in VSCode correctly because are missing variable reference field
Support enum type as signed integer (because C standard doesn't specify signedness of enum)
In case of abnormal termination of the child program record signal number and the last step
According to https://microsoft.github.io/debug-adapter-protocol/implementors/tools/ Eclipse Theia IDE supports DAP protocol so VS Code debugger extension should work with Theia as well.
Test it
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.)
Especially largest regions.
As an option - create a worker thread for every region (to avoid overhead of thread creation/joining) and just trigger checks
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.
Script to test:
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
Add test script for viewng different kind of expressions:
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).
Support Disconnect DAP request
On reverse continue debugger should stop on last hit of prev breakpoint, but it stops on first, like with regular continue
Create lex/yacc definition for parsing expressions into AST
Add script for
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 custom (typdef'ed) types:
Add support for Data breakpoints
https://microsoft.github.io/debug-adapter-protocol/specification#Requests_StepInTargets
and targetId in stepIn request
Allow to attach to running program by PID
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
Add support for shared libs, loaded during client execution, see https://github.com/TartanLlama/dltrace
In build config add creation of artifacts
Test script to test
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.