2

私はコードをもっている:

#include <list>

int f(std::list<int>& l)
{
    l.clear();
    int i = 0;
    return i;
}

int main(int argc, char* argv[])
{
    std::list<int> l;
    int i = f(l);
    i++;  
}

私は3つの方法でそれを構築します:

  1. g++ -g -o main1 ../main1.cpp
  2. g++ -g -o main1 -O1 ../main1.cpp
  3. g++ -g -o main1 -O2 ../main1.cpp

gdb (GNU gdb (GDB) 7.5.1) でデバッグし、int f(std::list& l) にステップインすると、次のような出力が得られます。

Python Exception <type 'exceptions.IndexError'> list index out of range:
(gdb) Python Exception <type 'exceptions.IndexError'> list index out of range:

これが私のgdbセッションです:

(gdb) bre main
Breakpoint 1 at 0x400603: file ../main1.cpp, line 11.
(gdb) r
Starting program: /home/mhd/Texts/Programming/Programms/Exercises/Linux/BruceMolayUnixLinux/Exercises/2/Head/Debug/main1 
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7ffff7ffa000
warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
(gdb) n
(gdb) n
(gdb) s
Python Exception <type 'exceptions.IndexError'> list index out of range: 
(gdb) Python Exception <type 'exceptions.IndexError'> list index out of range: 
q

Debugger finished

この例外を防ぐにはどうすればよいですか? なぜ例外がスローされたのですか?

4

1 に答える 1

0

問題のプリティ プリンタを無効にすることで、この例外を防ぐことができます。「pretty-printer の無効化のヘルプ」を参照してください。

于 2013-05-24T17:17:20.750 に答える