Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как программно вызвать отладчик в коде? / 23 сообщений из 23, страница 1 из 1
20.02.2018, 09:29
    #39604556
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
Типа такого, как в c# в Visual Studio

Код: c#
1.
2.
3.
4.
5.
6.
[Conditional("DEBUG")]
void DebugBreak()
{
  if(System.Diagnostics.Debugger.IsAttached)
    System.Diagnostics.Debugger.Break();
}



....

DebugBreak();// <-------
...
Рейтинг: 0 / 0
20.02.2018, 13:03
    #39604756
OoCc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
Ролг ХупинТипа такого, как в c# в Visual Studio

Код: c#
1.
2.
3.
4.
5.
6.
[Conditional("DEBUG")]
void DebugBreak()
{
  if(System.Diagnostics.Debugger.IsAttached)
    System.Diagnostics.Debugger.Break();
}



....

DebugBreak();// <-------

как всё сложно за решёткой.

В линухе
Код: plaintext
1.
raise(SIGINT);


при запуске под отладчиком программа в этом месте остановится и вывалится в отладчик
Код: sql
1.
2.
$ gdb my_program
> run



в майкрософте может пройти обычный _asm{ int 3 };
...
Рейтинг: 0 / 0
20.02.2018, 14:48
    #39604852
д0kХ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
OoCcкак всё сложно за решёткой.

В линухе
[src C++]
raise(SIGINT);




попасть пальцем в небо, действительно не просто
:)
...
Рейтинг: 0 / 0
20.02.2018, 17:12
    #39604984
OoCc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
д0kХOoCcкак всё сложно за решёткой.

В линухе
[src C++]
raise(SIGINT);




попасть пальцем в небо, действительно не просто
:)
Разве Ролг спрашивал как создать свой дебаггер? К тому-же он кодит для Майкрософфта.
...
Рейтинг: 0 / 0
20.02.2018, 17:21
    #39604995
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
OoCc...
Разве Ролг спрашивал как создать свой дебаггер? К тому-же он кодит для Майкрософфта.
А у меня сложилось впечатление, что он пытается для Огрызка Яблока кодить )))
...
Рейтинг: 0 / 0
20.02.2018, 17:32
    #39605001
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
Leonid KudryavtsevOoCc...
Разве Ролг спрашивал как создать свой дебаггер? К тому-же он кодит для Майкрософфта.
А у меня сложилось впечатление, что он пытается для Огрызка Яблока кодить )))

Для
Mac OS 10.13

Есть ОДБЦ драйвер, к нему тестовая табуретка, пытаюсь расшевелить
...
Рейтинг: 0 / 0
20.02.2018, 17:36
    #39605006
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
OoCcРолг ХупинТипа такого, как в c# в Visual Studio

Код: c#
1.
2.
3.
4.
5.
6.
[Conditional("DEBUG")]
void DebugBreak()
{
  if(System.Diagnostics.Debugger.IsAttached)
    System.Diagnostics.Debugger.Break();
}



....

DebugBreak();// <-------

как всё сложно за решёткой.

В линухе
Код: plaintext
1.
raise(SIGINT);


при запуске под отладчиком программа в этом месте остановится и вывалится в отладчик
Код: sql
1.
2.
$ gdb my_program
> run



в майкрософте может пройти обычный _asm{ int 3 };


Спасибо! а как бы так сделать, чтобы не просто вывалилась в отладчик, а еще и запросила
путь к исходным кодам?

есть консольное прилагалище, сделанное в XCode, которое пытается подключиться через ОДБЦ драйвер к постгресу, но виснет наглухо. Вот и я пытаюсь понять, где клинит. Исходные тексты драйвера есть на той же машине.
...
Рейтинг: 0 / 0
20.02.2018, 17:36
    #39605007
OoCc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
Ролг ХупинLeonid Kudryavtsevпропущено...

А у меня сложилось впечатление, что он пытается для Огрызка Яблока кодить )))

Для
Mac OS 10.13


тогда std::raise(SIGINT)
...
Рейтинг: 0 / 0
20.02.2018, 17:42
    #39605012
OoCc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
Ролг ХупинOoCcпропущено...


как всё сложно за решёткой.

В линухе
Код: plaintext
1.
raise(SIGINT);


при запуске под отладчиком программа в этом месте остановится и вывалится в отладчик
Код: sql
1.
2.
$ gdb my_program
> run



в майкрософте может пройти обычный _asm{ int 3 };


Спасибо! а как бы так сделать, чтобы не просто вывалилась в отладчик, а еще и запросила
путь к исходным кодам?

есть консольное прилагалище, сделанное в XCode, которое пытается подключиться через ОДБЦ драйвер к постгресу, но виснет наглухо. Вот и я пытаюсь понять, где клинит. Исходные тексты драйвера есть на той же машине.
Я не спец в XCode но полагаю что там есть отладчик в исходных кодах.
...
Рейтинг: 0 / 0
20.02.2018, 17:51
    #39605020
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
OoCcРолг Хупинпропущено...



Спасибо! а как бы так сделать, чтобы не просто вывалилась в отладчик, а еще и запросила
путь к исходным кодам?

есть консольное прилагалище, сделанное в XCode, которое пытается подключиться через ОДБЦ драйвер к постгресу, но виснет наглухо. Вот и я пытаюсь понять, где клинит. Исходные тексты драйвера есть на той же машине.
Я не спец в XCode но полагаю что там есть отладчик в исходных кодах.

Похоже там оболочка над lldb, с его командами и пр.
...
Рейтинг: 0 / 0
20.02.2018, 17:56
    #39605026
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
Ролг ХупинВот и я пытаюсь понять, где клинит.

Почему бы тебе для этого не вставить printf() в ключевых точках?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.02.2018, 19:05
    #39605073
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
Dimitry SibiryakovРолг ХупинВот и я пытаюсь понять, где клинит.

Почему бы тебе для этого не вставить printf() в ключевых точках?..


тоже вариант.
...
Рейтинг: 0 / 0
20.02.2018, 19:44
    #39605092
д0kХ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
Ролг ХупинDimitry Sibiryakovпропущено...

Почему бы тебе для этого не вставить printf() в ключевых точках?..


тоже вариант.

Вчера же ....

Сбейте процесс любым сигналом в кору
посмотрите стек коры командой gdb bt .

Он вам точно покажет где оно
"висело" во время прихода сигнала .
и вы сможете посмотреть значения
переменных в области видимости "висящей" функции.
...
Рейтинг: 0 / 0
20.02.2018, 22:13
    #39605131
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
д0kХРолг Хупинпропущено...


тоже вариант.

Вчера же ....

Сбейте процесс любым сигналом в кору
посмотрите стек коры командой gdb bt .

Он вам точно покажет где оно
"висело" во время прихода сигнала .
и вы сможете посмотреть значения
переменных в области видимости "висящей" функции.

Сделал, получил, что можно сказать?

Код: 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.
(lldb) bt all
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
  * frame #0: 0x00007fff7d3e0d1e libsystem_kernel.dylib`__psynch_mutexwait + 10
    frame #1: 0x00000001003eac06 libsystem_pthread.dylib`_pthread_mutex_lock_wait + 102
    frame #2: 0x00000001003e8417 libsystem_pthread.dylib`_pthread_mutex_lock_slow + 254
    frame #3: 0x00000001003272e3 iODBC`SQLSetConnectOptionW + 35
    frame #4: 0x000000010031eaf1 iODBC`_iodbcdm_SetConnectOption_init + 369
    frame #5: 0x000000010031f1c1 iODBC`_iodbcdm_driverload + 1441
    frame #6: 0x0000000100321345 iODBC`SQLDriverConnect_Internal + 3605
    frame #7: 0x000000010032273a iODBC`SQLDriverConnectW + 314
    frame #8: 0x0000000100000f45 odbc_tst`ODBC_Connect(connStr=0x0000000000000000) at main.cpp:254
    frame #9: 0x00000001000026c6 odbc_tst`main(argc=1, argv=0x00007ffeefbff678) at main.cpp:1036
    frame #10: 0x00007fff7d291115 libdyld.dylib`start + 1
    frame #11: 0x00007fff7d291115 libdyld.dylib`start + 1
  thread #2
    frame #0: 0x00007fff7d3e1562 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00000001003ea062 libsystem_pthread.dylib`_pthread_wqthread + 1035
    frame #2: 0x00000001003e9c45 libsystem_pthread.dylib`start_wqthread + 13
  thread #3
    frame #0: 0x00007fff7d3e1562 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00000001003ea062 libsystem_pthread.dylib`_pthread_wqthread + 1035
    frame #2: 0x00000001003e9c45 libsystem_pthread.dylib`start_wqthread + 13
  thread #4
    frame #0: 0x00007fff7d3e1562 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00000001003ea062 libsystem_pthread.dylib`_pthread_wqthread + 1035
    frame #2: 0x00000001003e9c45 libsystem_pthread.dylib`start_wqthread + 13
(lldb) 
...
Рейтинг: 0 / 0
20.02.2018, 22:18
    #39605133
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
Ролг Хупинесть консольное прилагалище
Мне кажется хорошим инженерным тоном было-бы использовать устоявшиеся термины.
Не ходить по краю так сказать.
...
Рейтинг: 0 / 0
20.02.2018, 22:30
    #39605135
д0kХ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
Ролг Хупинд0kХпропущено...


Вчера же ....

Сбейте процесс любым сигналом в кору
посмотрите стек коры командой gdb bt .

Он вам точно покажет где оно
"висело" во время прихода сигнала .
и вы сможете посмотреть значения
переменных в области видимости "висящей" функции.

Сделал, получил, что можно сказать?

Код: 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.
(lldb) bt all
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
  * frame #0: 0x00007fff7d3e0d1e libsystem_kernel.dylib`__psynch_mutexwait + 10
    frame #1: 0x00000001003eac06 libsystem_pthread.dylib`_pthread_mutex_lock_wait + 102
    frame #2: 0x00000001003e8417 libsystem_pthread.dylib`_pthread_mutex_lock_slow + 254
    frame #3: 0x00000001003272e3 iODBC`SQLSetConnectOptionW + 35
    frame #4: 0x000000010031eaf1 iODBC`_iodbcdm_SetConnectOption_init + 369
    frame #5: 0x000000010031f1c1 iODBC`_iodbcdm_driverload + 1441
    frame #6: 0x0000000100321345 iODBC`SQLDriverConnect_Internal + 3605
    frame #7: 0x000000010032273a iODBC`SQLDriverConnectW + 314
    frame #8: 0x0000000100000f45 odbc_tst`ODBC_Connect(connStr=0x0000000000000000) at main.cpp:254
    frame #9: 0x00000001000026c6 odbc_tst`main(argc=1, argv=0x00007ffeefbff678) at main.cpp:1036
    frame #10: 0x00007fff7d291115 libdyld.dylib`start + 1
    frame #11: 0x00007fff7d291115 libdyld.dylib`start + 1
  thread #2
    frame #0: 0x00007fff7d3e1562 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00000001003ea062 libsystem_pthread.dylib`_pthread_wqthread + 1035
    frame #2: 0x00000001003e9c45 libsystem_pthread.dylib`start_wqthread + 13
  thread #3
    frame #0: 0x00007fff7d3e1562 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00000001003ea062 libsystem_pthread.dylib`_pthread_wqthread + 1035
    frame #2: 0x00000001003e9c45 libsystem_pthread.dylib`start_wqthread + 13
  thread #4
    frame #0: 0x00007fff7d3e1562 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00000001003ea062 libsystem_pthread.dylib`_pthread_wqthread + 1035
    frame #2: 0x00000001003e9c45 libsystem_pthread.dylib`start_wqthread + 13
(lldb) 



Мне кажется что Вы кому то наступили на хвост ( mutexwait ).
ОДБЦ драйвера обычно, ИМХО тредами
по собственному желанию не размножаются.

Им об этом нужно явным образом сказать - "размножайся с**а,
не беси меня асинхронностью".
...
Рейтинг: 0 / 0
20.02.2018, 23:02
    #39605141
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
д0kХРолг Хупинпропущено...


Сделал, получил, что можно сказать?

Код: 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.
(lldb) bt all
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
  * frame #0: 0x00007fff7d3e0d1e libsystem_kernel.dylib`__psynch_mutexwait + 10
    frame #1: 0x00000001003eac06 libsystem_pthread.dylib`_pthread_mutex_lock_wait + 102
    frame #2: 0x00000001003e8417 libsystem_pthread.dylib`_pthread_mutex_lock_slow + 254
    frame #3: 0x00000001003272e3 iODBC`SQLSetConnectOptionW + 35
    frame #4: 0x000000010031eaf1 iODBC`_iodbcdm_SetConnectOption_init + 369
    frame #5: 0x000000010031f1c1 iODBC`_iodbcdm_driverload + 1441
    frame #6: 0x0000000100321345 iODBC`SQLDriverConnect_Internal + 3605
    frame #7: 0x000000010032273a iODBC`SQLDriverConnectW + 314
    frame #8: 0x0000000100000f45 odbc_tst`ODBC_Connect(connStr=0x0000000000000000) at main.cpp:254
    frame #9: 0x00000001000026c6 odbc_tst`main(argc=1, argv=0x00007ffeefbff678) at main.cpp:1036
    frame #10: 0x00007fff7d291115 libdyld.dylib`start + 1
    frame #11: 0x00007fff7d291115 libdyld.dylib`start + 1
  thread #2
    frame #0: 0x00007fff7d3e1562 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00000001003ea062 libsystem_pthread.dylib`_pthread_wqthread + 1035
    frame #2: 0x00000001003e9c45 libsystem_pthread.dylib`start_wqthread + 13
  thread #3
    frame #0: 0x00007fff7d3e1562 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00000001003ea062 libsystem_pthread.dylib`_pthread_wqthread + 1035
    frame #2: 0x00000001003e9c45 libsystem_pthread.dylib`start_wqthread + 13
  thread #4
    frame #0: 0x00007fff7d3e1562 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00000001003ea062 libsystem_pthread.dylib`_pthread_wqthread + 1035
    frame #2: 0x00000001003e9c45 libsystem_pthread.dylib`start_wqthread + 13
(lldb) 



Мне кажется что Вы кому то наступили на хвост ( mutexwait ).
ОДБЦ драйвера обычно, ИМХО тредами
по собственному желанию не размножаются.

Им об этом нужно явным образом сказать - "размножайся с**а,
не беси меня асинхронностью".


да у меня тоже возникло смутное подозрение, что там клинч, но с чего бы... я не чудил внутри драйвера, специально не мутил...
...
Рейтинг: 0 / 0
20.02.2018, 23:33
    #39605152
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
Ролг Хупин,

из разных потоков тоже невызывала, [он сам пришел] ??
...
Рейтинг: 0 / 0
21.02.2018, 10:18
    #39605304
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
SiemarglРолг Хупин,

из разных потоков тоже невызывал, [он сам пришел] ??

Есть простое линейное консольное приложение, для тестирования,

Вот кусок, файл приаттачил:

Код: plaintext
1.
2.
3.
4.
5.
6.
   printf ("U**: Work DSN:%s\n", (char *) dataSource);
    strcpy_A2W (wdataSource, (char *) dataSource);
    printf ("U**: SQLDriverConnectW - Start:%S\n", wdataSource);
    status = SQLDriverConnectW (hdbc, 0, (SQLWCHAR *) wdataSource, SQL_NTS,
                                (SQLWCHAR *) outdsn, NUMTCHAR (outdsn), &buflen, SQL_DRIVER_COMPLETE); // <-виснет
    printf ("U**: SQLDriverConnectW - End: status=%d\n", status);



Напихал printf, но в той функции они не вызываются даже в самом начале.
...
Рейтинг: 0 / 0
21.02.2018, 17:04
    #39605650
д0kХ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
Ролг ХупинSiemarglРолг Хупин,

из разных потоков тоже невызывал, [он сам пришел] ??

Есть простое линейное консольное приложение, для тестирования,

Вот кусок, файл приаттачил:

Код: plaintext
1.
2.
3.
4.
5.
6.
   printf ("U**: Work DSN:%s\n", (char *) dataSource);
    strcpy_A2W (wdataSource, (char *) dataSource);
    printf ("U**: SQLDriverConnectW - Start:%S\n", wdataSource);
    status = SQLDriverConnectW (hdbc, 0, (SQLWCHAR *) wdataSource, SQL_NTS,
                                (SQLWCHAR *) outdsn, NUMTCHAR (outdsn), &buflen, SQL_DRIVER_COMPLETE); // <-виснет
    printf ("U**: SQLDriverConnectW - End: status=%d\n", status);



Напихал printf, но в той функции они не вызываются даже в самом начале .

1. поставьте после первого printf
throw (int) 1 ;

Когда упадет, смотрите кору, изменился ли стек .

2. какой ихнтамнет сделал start_wqthread ?
...
Рейтинг: 0 / 0
21.02.2018, 17:43
    #39605681
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
д0kХРолг Хупинпропущено...


Есть простое линейное консольное приложение, для тестирования,

Вот кусок, файл приаттачил:

Код: plaintext
1.
2.
3.
4.
5.
6.
   printf ("U**: Work DSN:%s\n", (char *) dataSource);
    strcpy_A2W (wdataSource, (char *) dataSource);
    printf ("U**: SQLDriverConnectW - Start:%S\n", wdataSource);
    status = SQLDriverConnectW (hdbc, 0, (SQLWCHAR *) wdataSource, SQL_NTS,
                                (SQLWCHAR *) outdsn, NUMTCHAR (outdsn), &buflen, SQL_DRIVER_COMPLETE); // <-виснет
    printf ("U**: SQLDriverConnectW - End: status=%d\n", status);



Напихал printf, но в той функции они не вызываются даже в самом начале .

1. поставьте после первого printf
throw (int) 1 ;

Когда упадет, смотрите кору, изменился ли стек .

2. какой ихнтамнет сделал start_wqthread ?

2. не я и, думаю - не писатели драйвера, проверю в их коде.
Но между приложением и одбц драйвером есть еще прокладка iODBC с его хозяйством, типа - работа с одбц вот так организована, оно должно быть установлено в системе, может там этот поток. Поищу в их кодах.
...
Рейтинг: 0 / 0
21.02.2018, 18:29
    #39605716
OoCc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
д0kХ2. какой ихнтамнет сделал start_wqthread ?
Их сделал GCD Они не влияют на thread #1
...
Рейтинг: 0 / 0
21.02.2018, 18:37
    #39605718
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно вызвать отладчик в коде?
Ролг Хупинмежду приложением и одбц драйвером есть еще прокладка iODBC с его хозяйством

На любой платформе между приложениями и ODBC драйверами расположен ODBC Manager. В
UnixODBC в его состав входит полезная утилита isql с помощью которой можно тестировать
настройку. Если аналогичная утилита есть и в iODBC, то я рекомендую для начала
использовать её для проверки корректности работы iODBC с любым заведомо исправным ODBC
драйвером. Чисто чтобы понять где именно может быть проблема. Сейчас у тебя в системе три
не тестированных компонента, что даёт восемь вариантов локализации проблем(ы). Надо
сокращать путём проверки того, что а) iODBC работает хоть с каким-то драйвером и
приложением, б) приложение работает хоть с каким-то драйвером, в) драйвер работает хоть с
каким-то приложением из тех, что были протестированы в п. а).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как программно вызвать отладчик в коде? / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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