title: cannot not step into function while debugging
body: <p>my simple test cpp is followed:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;string&gt;
  #include &lt;iostream&gt;
  using namespace std;
  
  void hello(string str) {
      cout &lt;&lt; str &lt;&lt; endl;
  }
  
  int main(int argc, const char **argv) {
      string str = "hello world!";
      hello(str);
      return 0;
  }
  </code></pre>
  
  <p>and I compile the cpp with command:</p>
  
  <pre><code>g++ hello.cpp -o hello -g
  </code></pre>
  
  <p>and then run as debug mode:</p>
  
  <pre><code>cgdb hello
  (gdb) b main
  (gdb) r
  (gdb) n
  (gdb) s
  </code></pre>
  
  <p>after I use step command in gdb, I got the following errors:</p>
  
  <pre><code>std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::basic_string (this=0x7fffffffe5c0, __str="hello world!") at /build/gcc/src/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/basic_string.h:399
  399     /build/gcc/src/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/basic_string.h: No such file or directory.
  </code></pre>
  
  <p>I found that this error only happen when the function has arguments with type of string. For example:</p>
  
  <pre><code>void hello(int i);
  </code></pre>
  
  <p>I can step into the function hello without any problem.</p>
  
  <p>I use the following command to find where allocator.h is:</p>
  
  <pre><code>sudo find / | grep allocator.h
  </code></pre>
  
  <p>and I got the results as follow(only list part of the results):</p>
  
  <pre><code>/usr/include/c++/6.3.1/ext/bitmap_allocator.h
  /usr/include/c++/6.3.1/ext/debug_allocator.h
  /usr/include/c++/6.3.1/ext/new_allocator.h
  /usr/include/c++/6.3.1/ext/extptr_allocator.h
  /usr/include/c++/6.3.1/ext/throw_allocator.h
  /usr/include/c++/6.3.1/ext/pool_allocator.h
  /usr/include/c++/6.3.1/ext/array_allocator.h
  /usr/include/c++/6.3.1/ext/malloc_allocator.h
  /usr/include/c++/6.3.1/x86_64-pc-linux-gnu/bits/c++allocator.h
  /usr/include/c++/6.3.1/bits/allocator.h
  /usr/include/c++/6.3.1/bits/uses_allocator.h
  /usr/include/gc/gc_allocator.h
  </code></pre>
  
  <p>Why would this happen?
  THX!!!</p>