powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как программно вызвать отладчик в коде?
23 сообщений из 23, страница 1 из 1
Как программно вызвать отладчик в коде?
    #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
Как программно вызвать отладчик в коде?
    #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
Как программно вызвать отладчик в коде?
    #39604852
д0kХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OoCcкак всё сложно за решёткой.

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




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

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




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

Для
Mac OS 10.13

Есть ОДБЦ драйвер, к нему тестовая табуретка, пытаюсь расшевелить
...
Рейтинг: 0 / 0
Как программно вызвать отладчик в коде?
    #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
Как программно вызвать отладчик в коде?
    #39605007
Фотография OoCc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинLeonid Kudryavtsevпропущено...

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

Для
Mac OS 10.13


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


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

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


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



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


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

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



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

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

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

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

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


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

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


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

Вчера же ....

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

Он вам точно покажет где оно
"висело" во время прихода сигнала .
и вы сможете посмотреть значения
переменных в области видимости "висящей" функции.
...
Рейтинг: 0 / 0
Как программно вызвать отладчик в коде?
    #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
Как программно вызвать отладчик в коде?
    #39605133
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупинесть консольное прилагалище
Мне кажется хорошим инженерным тоном было-бы использовать устоявшиеся термины.
Не ходить по краю так сказать.
...
Рейтинг: 0 / 0
Как программно вызвать отладчик в коде?
    #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
Как программно вызвать отладчик в коде?
    #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
Как программно вызвать отладчик в коде?
    #39605152
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

из разных потоков тоже невызывала, [он сам пришел] ??
...
Рейтинг: 0 / 0
Как программно вызвать отладчик в коде?
    #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
Как программно вызвать отладчик в коде?
    #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
Как программно вызвать отладчик в коде?
    #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
Как программно вызвать отладчик в коде?
    #39605716
Фотография OoCc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
д0kХ2. какой ихнтамнет сделал start_wqthread ?
Их сделал GCD Они не влияют на thread #1
...
Рейтинг: 0 / 0
Как программно вызвать отладчик в коде?
    #39605718
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупинмежду приложением и одбц драйвером есть еще прокладка iODBC с его хозяйством

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


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