(gdb) list main
1 #include <boost/lexical_cast.hpp>
2 #include <string>
3 #include <iostream>
4
5 int main() {
6 std::string str(" 1.0 ");
7 double d;
8 try {
9 d = boost::lexical_cast<double>(str);
10 std::cout << "converted\n";
(gdb) break 9
Breakpoint 1 at 0x8048f12: file test_gdb.cpp, line 9.
(gdb) run
Starting program: /home/ermak/Projects/C++/test_gdb_exception_from_boost/test_gdb
Breakpoint 1, main () at test_gdb.cpp:9
9 d = boost::lexical_cast<double>(str);
(gdb) next
not converted!
Program exited normally.
(gdb) quit
Вопрос: почему после next отладчик не пошел в catch блок? Что я делаю не так?
При отладке в MSVC 2005 после исключения отладка продолжается в catch блоке. gdb не умеет что ли такое? В Eclipse и Emacs оболочках также не рабоает.
"В природе не существует инструмента, машины или устройства, по силе и виртуозности сравнимого с человеческой рукой."
В. Г. Бэнхэм.
---
Ваяю "нелинейный" клавиатурный тренажёр для GNU/Linux - nlkt.
Поигрался с командой catch. Когда в консоле gdb задаю команду
catch catch
Переходит почти правильно, правда сначала в какую-то системную so залазит.
А вот как бы это все из Eclipse засавить работать? Т.е. чтобы автоматически для gdb эта команда отсылалась...
Хотя с другой стороны не так критично, после первого промаха можно просто ставить breakpoint на начала блока catch..