|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
Можно ли использовать какой-то аналог в обычном с для отлова, например, записи за границу выделенного блока памяти? Сейчас при таком действии приложение сразу улетает, а вот, чтобы не улетало, как сделать? Знаю, что где-то в 1-2 функциях фигня проихсодит, хотелось бы поймать ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2018, 12:51 |
|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
Если виндовс, то почитай про SEH ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2018, 13:29 |
|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
256kDima TЕсли виндовс, то почитай про SEH надо бы в мак осе научи лягушку далеко прыгать с longjmp . ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2018, 13:58 |
|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
256kЗнаю, что где-то в 1-2 функциях фигня проихсодит, хотелось бы поймать Говорят, " http://drmemory.org%22%5DDr.Memory]http://drmemory.org"]Dr.Memory работает и под макосью. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2018, 14:06 |
|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
OoCc256kпропущено... надо бы в мак осе научи лягушку далеко прыгать с longjmp . Не прочитал начало. в маке должен быть сигнал SIGSEGV ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2018, 14:08 |
|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov256kЗнаю, что где-то в 1-2 функциях фигня проихсодит, хотелось бы поймать Говорят, " http://drmemory.org%22%5DDr.Memory]http://drmemory.org"]Dr.Memory работает и под макосью. Неплохой, но пишут там: авторCurrently, Dr. Memory does not yet support uninitialized read detection for 64-bit applications, so we recommend compiling your target application as 32-bit. Моя .so на Mac OS Sierra, не пройдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2018, 15:53 |
|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
256kМоя .so на Mac OS Sierra, не пройдет. Оно тебе и не надо. Твой случай это segfault, а он ловится. Кроме того, гугль утверждает, что 32-х разрядные приложения в Сиерре тоже запускаются, хоть и с предупреждением. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2018, 18:43 |
|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov256kМоя .so на Mac OS Sierra, не пройдет. Оно тебе и не надо. Твой случай это segfault, а он ловится. Кроме того, гугль утверждает, что 32-х разрядные приложения в Сиерре тоже запускаются, хоть и с предупреждением. Запускаются, но мое строится 64бит. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2018, 12:42 |
|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov256kМоя .so на Mac OS Sierra, не пройдет. Оно тебе и не надо. Твой случай это segfault, а он ловится. Кроме того, гугль утверждает, что 32-х разрядные приложения в Сиерре тоже запускаются, хоть и с предупреждением. ага, как поймать segfault в с? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2018, 12:43 |
|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
OoCcOoCcпропущено... научи лягушку далеко прыгать с longjmp . Не прочитал начало. в маке должен быть сигнал SIGSEGV Тут вот еще как: есть внешнее приложение, у меня кодов нет, которое использует мою длл, падение происходит в приложении, как в вызывающем процессе из-за того, что где-то в моей длл издет запись в уже освобожденную память. Так вот: можно ли прикрутить перехватчик SIGSEGV в длл? Например, я приблизительно знаю, где нарушение, потому, что только там я могу что-то менять, коды есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2018, 12:55 |
|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
256kOoCcпропущено... Не прочитал начало. в маке должен быть сигнал SIGSEGV Тут вот еще как: есть внешнее приложение, у меня кодов нет, которое использует мою длл, падение происходит в приложении, как в вызывающем процессе из-за того, что где-то в моей длл издет запись в уже освобожденную память. Так вот: можно ли прикрутить перехватчик SIGSEGV в длл? Например, я приблизительно знаю, где нарушение, потому, что только там я могу что-то менять, коды есть. А что краш дамп говорит? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2018, 13:30 |
|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
OoCc256kпропущено... Тут вот еще как: есть внешнее приложение, у меня кодов нет, которое использует мою длл, падение происходит в приложении, как в вызывающем процессе из-за того, что где-то в моей длл издет запись в уже освобожденную память. Так вот: можно ли прикрутить перехватчик SIGSEGV в длл? Например, я приблизительно знаю, где нарушение, потому, что только там я могу что-то менять, коды есть. А что краш дамп говорит? Краш дамп приложения показывает, что во время цикла по выборке записей из базы где-то кырдык. Подроностей не вижу. Консольный лог пишет типа такого malloc: *** error for object 0x102469358: incorrect checksum for freed object - object was probably modified after being freed. *** set a breakpoint in malloc_error_break to debug но по адресу в приложении не могу определить, где разруха в длл. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2018, 13:51 |
|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
256kOoCcпропущено... А что краш дамп говорит? Краш дамп приложения показывает, что во время цикла по выборке записей из базы где-то кырдык. Подроностей не вижу. Консольный лог пишет типа такого malloc: *** error for object 0x102469358: incorrect checksum for freed object - object was probably modified after being freed. *** set a breakpoint in malloc_error_break to debug но по адресу в приложении не могу определить, где разруха в длл. Я бы сначала использовал средства которые предоставляет система. Malloc debug ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2018, 14:56 |
|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
256kТут вот еще как: есть внешнее приложение, у меня кодов нет, которое использует мою длл, падение происходит в приложении, как в вызывающем процессе из-за того, что где-то в моей длл издет запись в уже освобожденную память. Повторяю медленно: DrMemory это поймает. Потому что "чтение не инициализированной памяти", которое там не реализовано, это совсем не "запись в уже освобождённую память". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2018, 14:36 |
|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
OoCcOoCcпропущено... научи лягушку далеко прыгать с longjmp . Не прочитал начало. в маке должен быть сигнал SIGSEGV Есть, да, приложение(не мое, кодов нет)-вызывает длл(моё, коды есть) Поставил ловушки в длл, но поймал не SIGSEGV, а SIGSABRT Может перед тем SIGSEGV и шел, но не долетел до длл, а уже по факту убоя сработал SIGSABRT ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2018, 13:25 |
|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
256kприложение(не мое, кодов нет)-вызывает длл(моё, коды есть) Ну а просто запустить его в отладчике ты пробовал? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2018, 13:43 |
|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
256kOoCcпропущено... Не прочитал начало. в маке должен быть сигнал SIGSEGV Есть, да, приложение(не мое, кодов нет)-вызывает длл(моё, коды есть) Поставил ловушки в длл, но поймал не SIGSEGV, а SIGSABRT Может перед тем SIGSEGV и шел, но не долетел до длл, а уже по факту убоя сработал SIGSABRT SIGSEGV может и не появляться совсем. SIGSABRT инициируется abort() функцией. Откуда уверенность что её не исполняет приложение или какая-либо библиотечная функция типа malloc() ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2018, 14:24 |
|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov256kприложение(не мое, кодов нет)-вызывает длл(моё, коды есть) Ну а просто запустить его в отладчике ты пробовал? как? Запускающее приложение - не мое, кодов нет, моя только длл (*.so) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2018, 14:47 |
|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
256kкак? gdb "Запускающее приложение" Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2018, 15:17 |
|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov256kкак? gdb "Запускающее приложение" реально там всё кучеряво: стартует главное приложение (Java), оно с GUI, при определенном выборе юзера это приложение изнутри стартует сервер (о нем я и писал, что оно главное), а он - грузит мою длл. При нарушении памяти моей длл, этот сервер улетает, а главное приложение спрашивает юзера и перестартовывает его. Дебажить сервер - не знаю с какой стороны его ловить, гуи нету, улетает и прилетает, как хочет. Такая фигня, такая карусель. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2018, 15:49 |
|
try/catch в обычном c?
|
|||
---|---|---|---|
#18+
256kДебажить сервер - не знаю с какой стороны его ловить, гуи нету, улетает и прилетает, как хочет. а) С помощью strace или дампа коры выясняешь с какими параметрами и окружением этот сервер запускается, воспроизводишь и гуй остаётся за пределами задачи, которая сводится к уже известной. б) Доктору говоришь трассировать запускаемые процессы тоже (что, впрочем, он делает по умолчанию), находишь нужный лог и... всё, телемаркет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2018, 18:18 |
|
|
start [/forum/topic.php?fid=57&msg=39742344&tid=2017707]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
23ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 127ms |
0 / 0 |