This Blog is first of all memos for me!! From time to time I get exposed to new and cool stuff for developers and architects ,most of the time its a solution for a problem or tips or tricks, so, I would like to track my memos and share it with you, it can save your time and nervous, I hope you will enjoy it - by Yaniv Tzanany.
Search This Blog
Tuesday, April 4, 2023
Thursday, March 30, 2023
c++ coding standards (jsf c++)
great pdf with instruction about coding standards
Joint Strike Fighter Air Vehicle C++ Coding Standards
Monday, March 27, 2023
Debugging C++ , with VSCode & GDB command ( improve loading performance tip for heavy projects)
Its all about symbols that loaded into memory in the debug process.
sometimes moving with F10 takes time , and looks like vscode screen is freezing.
to fix this issue and get much better vscode debug performance follow the next steps:
add to launch.json file as follow the next section, make sure in the exceptionList you have your brand so file .
the section below prevent loading extra symbols that you don't need to debug.
"loadAll": false,
"exceptionList": "libMyShared.so"
},
to work with gdb command line make sure all the symbolic will not loaded , the default is ON.
the next parameter control such behavior
in gdb type 'set auto-solib-add off' - disabled loading any symbolic files.
you can start your program
and when your SO files loaded , you can CTRL-C
and use the share command to load your so symbolic file.
share /path/mysofile.so
option 2 : put in your program the next line
__asm__ volatile("int $0x03");
its will break into your gdb and use share command to load your symbolic .
Advanced Debugging with GDB - nice video
enjoy
Yaniv Tzanany
Monday, March 20, 2023
C++ custom debugger view for VisualCode
you can add custom view for debugger.
https://www.cppstories.com/2021/natvis-tutorial/
https://devblogs.microsoft.com/cppblog/debug-visualizers-in-visual-c-2015/
create into your root folder xxx.natvis
make sure in the launch.json to add
more sample:
note:
the Name of the class must be full qualified e.g. contain namespace name if exist.
even typedef name should be act as new Name in the natvis file.
ty
enjoy
Yaniv
sample template class:
sample template natvis file:
Tuesday, March 14, 2023
Sunday, March 12, 2023
C++ struct alignment - can save you memory
the orders of members in a struct affect sizeof of struct
see this example https://www.joshcaratelli.com/blog/struct-packing
if no compiler directive - memory align to 8 bytes by default
struct top
{
char* p; //8 bytes
int i; //4 bytes
short s; // 2 bytes
char c; // 1 byte
// 1 padding
int t; // 4 bytes
// 4 padding
};
struct buttom
{
char c; // 1 bytes -- 7 padding
char* p; //8 bytes
short s; //2 bytes
int i; //4 bytes
// 2 padding
int t; // 4 bytes
// 4 padding
};
int sizeTop = sizeof(top); // =>24
int sizeButtom = sizeof(buttom); // =>32