On Fri, 26 Jul 2002, Daniel A. Koepke wrote: > If I had to guess, I'd say your strlen() implemention is written in > inline assembly and being inlined by the compiler. The debugger isn't > smart enough to notice the side-effects of the inline assembly, so it > doesn't see the initialization. As a follow-up, this does indeed appear to be the case, as mentioned briefly at http://developer.kde.org/~sewardj/ : There are some limitations, the most significant of which are: [...] * String functions (strlen, at least) which are inlined by gcc-3.1 and above at high optimisation levels cause considerable numbers of false positives. This problem is under consideration. Current advice is to either use an earlier gcc or use gcc >= 3.1 but at a reduced optimisation setting. [...] You might consider editing your Makefile to remove the -O2 flag from CFLAGS while you are debugging with Valgrind. In this case, I wouldn't suggest editing Makefile.in because you'll probably want to bring back -O2 after debugging and won't want it to disappear every time you update your Makefile with config.status. (You *do* edit Makefile.in and then run config.status to regenerate Makefile instead of just directly editing Makefile with changes you desire to keep, don't you? You should.) -dak -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | | Newbie List: http://groups.yahoo.com/group/circle-newbies/ | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 06/25/03 PDT