Today, I debugged a tricky issue, a bug related to a 3rd-party library. When I used gdb
to check a structure’s values, found the last member was missed compared to the definitions in header file. I began to suspect this might be caused by 3rd-party library. I checked the upgrade log, then found the root cause: when I compiled the code, the 3rd-party library’s version is v1.1
, but when I run the program, the library was upgraded to v1.2
by others, which caused this mysterious bug. The solution is simple: rebuild the code. But the debugging process is exhausting.
Month: May 2023
Bisection assert is a good debug methodology
Recently, I fixed an issue which is related to uninitialised bit-field in C
programming language. Because the bit-filed can be either 0
or 1
, so the bug will occur randomly. But the good news is the reproduced rate is very high, nearly 50%
. Though I am not familiar with the code, I used bisection assert
to help:
{
......
assert(bit-field == 0);
......
assert(bit-field == 0);
......
}
If the first assert
is not triggered, but the second one is, I can know which code block has the bug, then bisect code and add assert
again, until the root cause is found.