On Thu, 16 Feb 2023, 18:39 , wrote: > On 2023-02-16 15:29, Jonathan Wakely wrote: > > On Thu, 16 Feb 2023 at 15:25, i.nixman--- via Gcc-help > > wrote: > >> > >> hello, > >> > >> > >> I can successfully build the same C++ code using GCC-8.3.1 for Debug > >> (-g > >> -O0) and Release (-g -O2) build. > >> I can successfully debug the Release-executable on a remote host, but > >> I > >> can't debug the Debug-executable on a remote host, because the > >> Debug-executable imports an extra symbol > >> _ZNKSt9basic_iosIcSt11char_traitsIcEEcvbEv from libstdc++ which > >> doesn't > >> exist. > > > > It should exist, it has been there since GCC > > hmm... > > I just checked the two binaries using this cmd: > > > readelf -sW executable | grep > > _ZNKSt9basic_iosIcSt11char_traitsIcEEcvbEv > > it shows nothing for release build, and shows this for debug build: > > > 54: 0000000000000000 0 FUNC GLOBAL DEFAULT UND > > _ZNKSt9basic_iosIcSt11char_traitsIcEEcvbEv > > 199898: 0000000000000000 0 FUNC GLOBAL DEFAULT UND > > _ZNKSt9basic_iosIcSt11char_traitsIcEEcvbEv > This only shows that the function is inlined in the optimized build, and not in the debug build, so the debug one has an unresolved reference to a symbol defined in the libstdc++ dynamic library. This is completely normal. > > what should I do next to understand the reason? > Check which libstdc++.so.6 is being used by the executable when you're debugging it and make sure it's the one from the GCC build you're compiling with. https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic Since the problem happens when debugging on a remote host, you need to make sure you have the right libstdc++.so.6 when doing that debugging. moreover, im unsure I understand the reason correctly... > > > > best! > > > > > >> > >> but I don't want to debug libstdc++, so I think I shouldn't install > >> additional debug version of libstdc++. > >> > >> it looks like a bug, or am I wrong? > >> > >> another my question is, what should I do to get rid of that extra > >> symbol > >> in Debug build? > >> > >> > >> > >> > >> best! > >> > >> ps > >> I can't update GCC nor libstdc++. >