Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / как узнать номер строки вызвавщей исключение / 5 сообщений из 5, страница 1 из 1
28.10.2005, 07:45
    #33349030
Kornjushin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как узнать номер строки вызвавщей исключение
Добрый день.
Не подскажите есть ли в VC++ 7 способ узнать какая строка кода вызвала исключение.
P.S. В компиляторе от Borland есть глобальные переменные __throwLineNumber
...
Рейтинг: 0 / 0
30.10.2005, 15:26
    #33351644
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как узнать номер строки вызвавщей исключение
Ну так ты можешь сам в свое исплючение включить эту информацию :
__FILE__ __LINE__.
...
Рейтинг: 0 / 0
31.10.2005, 18:45
    #33353992
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как узнать номер строки вызвавщей исключение
MasterZivНу так ты можешь сам в свое исплючение включить эту информацию :
__FILE__ __LINE__.

и будет там номер строки в кэтче.

Я для тестирования расстоавлял везде по коду

int debug_line = __LINE__;

а потом сужал диапазон поиска
...
Рейтинг: 0 / 0
31.10.2005, 22:36
    #33354202
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как узнать номер строки вызвавщей исключение
Lepsik MasterZivНу так ты можешь сам в свое исплючение включить эту информацию :
__FILE__ __LINE__.

и будет там номер строки в кэтче.

Чего, не полял ?
...
Рейтинг: 0 / 0
31.10.2005, 23:24
    #33354224
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как узнать номер строки вызвавщей исключение
ты наверное это имел ввиду ?

Если сорс код доступен, то переносимый способ — это задефайнить throw:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
#include <cstdio>
#include <stdexcept>

struct throw_site
{
     throw_site(char const* file, int line)
         : file_(file), line_(line)
     {}

     char const* file_;
     int line_;
};

template<class exception>
struct wrapper : exception, throw_site
{
     wrapper(exception const& e, throw_site const& s)
         : exception(e), throw_site(s)
     {}
};

template<class exception>
void operator+(throw_site const& s, exception const& e)
{
     throw wrapper<exception>(e, s);
}

#define throw throw_site(__FILE__, __LINE__) +

int main()
{
     try
     {
         throw std::runtime_error("oops");
     }
     catch(std::exception& e)
     {
         if(throw_site* s = dynamic_cast<throw_site*>(&e))
         {
             fprintf(stderr, "thrown at %s:%d\n", s->file_, s->line_);
         }
     }
}
 
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / как узнать номер строки вызвавщей исключение / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]