나는이 이상한 행동을 얻을 :GDB는 라인 번호에 명확하게 브레이크 포인트를 설정할 때 여러 개의 브레이크 포인트를 설정합니다. 잘못된 디버그 기호? 중단 점을 설정할 때
내가 원하는 실제 라인, 즉입니다 어느 것도 6 개 라인, 될 일이GNU gdb (GDB) 7.6.2 (Debian 7.6.2-1)
... Blah blah legal stuff
Reading symbols from /home/matt/Programming/Latium/latium/src/test_latium...done.
(gdb) break base58.h:144
Breakpoint 1 at 0x43597f: base58.h:144. (6 locations)
(gdb) info breakpoints
Num Type Disp Enb Address What
1 breakpoint keep y <MULTIPLE>
1.1 y 0x000000000043597f in CBase58Data::SetString(char const*) at base58.h:144
1.2 y 0x0000000000452fcf in CBitcoinAddress::CBitcoinAddress(char const*) at /home/matt/Programming/Latium/latium/src/base58.h:144
1.3 y 0x000000000045324f in CBitcoinSecret::SetString(char const*) at /home/matt/Programming/Latium/latium/src/base58.h:144
1.4 y 0x00000000004db613 in DecodeAddress(std::string, CService&) at base58.h:144
1.5 y 0x0000000000573d1a in CBitcoinAddress::CBitcoinAddress(std::string const&) at base58.h:144
1.6 y 0x00000000005bea68 in ReadKeyValue(CWallet*, CDataStream&, CDataStream&, int&, std::vector<uint256, std::allocator<uint256> >&, bool&, bool&, std::string&, std::string&) at base58.h:144
. base58.h의 144 행. 이 문제의 원인은 무엇이며 어떻게 문제를 파악하고 해결할 수 있습니까?
저는 GNU Make 3.81입니다. 차이가 있다면 -j8을 사용하고 있습니다. gcc는 데비안 4.8.2-16입니다.
다른 파일에 중단 점을 설정하려고 시도했으며 다른 헤더 파일을 포함하여 작동하는 것처럼 보입니다. 나도 makefile을 청소하려고 노력했다. .. No 행운. 내가 ccache를 지우려고했는데 ... 행운이 없다.
여러 소스 파일에 포함 된 결과로 컴파일 된 코드의 여러 위치에서 중단 될 가능성이 높습니다. –
템플릿에 중단 점을 설정하려는 경우 GDB는 템플릿이 인스턴스화되는 모든 위치에 중단 점을 만들어야합니다. 인라인 함수의 경우 이와 비슷한 작업을 수행해야합니다. – IronMensan
시도했기 때문에 인라인 함수는 다른 파일에서는 문제가되지 않습니다. 또한 메서드에서 중단 점을 설정하려고 시도했지만 실패했습니다. 따라서이 예제의 중단 점이 인라인 함수에 있지만 문제는 아닙니다. 이것은 템플릿이 아닙니다. –