|
|
|
|
|
by pixelp3
3893 days ago
|
|
This is in the embedded world, unfortunately the gdb for this platform is rather limited and watch breakpoints don't work as expected. Essentially here is what was happening:
-Create C++ object
-Try to point some reference to this object, but object address is suddenly 0x1 (just by doing one step in gdb) when trying to access one of it's properties.
-Tried to run it with valgrind, and it works fine with valgrind, which leads me to believe it is some memory allocation issue with C++ on the heap
-I modified the C++ class to have a uint64_t variable before the variable declaration. Now program works fine! I believe the issue is probably with heap corruption at some point, when something overwrites certain addresses.Having that extra unneeded 64-bit int in the heap makes it still be valid. |
|
Thanks for sharing. There is nothing like a JTAG debugger with this kind of bugs. Good luck that it does not resurface later on.