Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Перехват доступа по указателю
|
|||
|---|---|---|---|
|
#18+
Есть следующий код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Можно, как нибудь перехватить присваивание Код: plaintext 1. например с помощью перегрузки операторов или как-то иначе? Нужно для проверки корректности указателя pA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2013, 18:14 |
|
||
|
Перехват доступа по указателю
|
|||
|---|---|---|---|
|
#18+
Poppler, Нет и да. Вначале вычисляется pB->m_pA, затем для результата temp выполняется temp = pA. Таким образом, temp должно быть пользовательского типа, допускающего присваивание A*. Поэтому в такой схеме фокус не пройдёт, а вот если m_pA есть объект типа A_Verifier, то в коде оператора присваивания можно разместить любые проверки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2013, 18:22 |
|
||
|
Перехват доступа по указателю
|
|||
|---|---|---|---|
|
#18+
PopplerНужно для проверки корректности указателя pA.а это вы как собираетесь проверять, интересно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2013, 21:58 |
|
||
|
Перехват доступа по указателю
|
|||
|---|---|---|---|
|
#18+
egorychа это вы как собираетесь проверять, интересно? проверять через IsBadReadPtr. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 00:37 |
|
||
|
Перехват доступа по указателю
|
|||
|---|---|---|---|
|
#18+
Popplerпроверять через IsBadReadPtr. Реймонд Чен пишет что этими функциями не следует пользоваться - IsBadXxxPtr should really be called CrashProgramRandomly ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 01:05 |
|
||
|
Перехват доступа по указателю
|
|||
|---|---|---|---|
|
#18+
Poppleregorychа это вы как собираетесь проверять, интересно? проверять через IsBadReadPtr. Интересно... И что будете далее делать, если он таки bad ? да и именно это можно сделать проще и универсальные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 08:25 |
|
||
|
Перехват доступа по указателю
|
|||
|---|---|---|---|
|
#18+
MasterZivИ что будете далее делать, если он таки bad ? Дальше фиксить баг.)) В унаследованном коде где-то не стоит критическая секция и как следствие часто рушится приложение. Чем проводить полный код ревью проще попробовать воткнуть туда логирование или брекпоинт. MasterZivда и именно это можно сделать проще и универсальные. Как? Мне нужно в случае если указателен неверен или логировать или срабатывать на брекпоинте (DebugBreak();). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 08:30 |
|
||
|
Перехват доступа по указателю
|
|||
|---|---|---|---|
|
#18+
Poppler, Тогда тебе всего этого, что ты хочешь делать, не надо. Просто ничего не делай, программа сама свалится в нужном месте. Если запустить под отладчиком, получишь стек и все что там еще надо. Можешь также просто поймать ... и обработать, можно SEH использовать, SEH даже лучше немного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 10:24 |
|
||
|
Перехват доступа по указателю
|
|||
|---|---|---|---|
|
#18+
MasterZivПросто ничего не делай, программа сама свалится в нужном месте. Если запустить под отладчиком, получишь стек и все что там еще надо. Она и валится и я получаю стек вызовов где после выхода из ядра вызывается унаследованный код и там валиться. Но этого мало, неизвестно что раньше происходит. Дело происходит на удалённой машине через WinDbg. MasterZivМожешь также просто поймать ... и обработать, можно SEH использовать, SEH даже лучше немного. Чем лучше? Нету информации где именно происходит изменение указателя и где мне нужно вставить критическую секцию. На данный момент известно только то, что указатель портится, известно в каком месте обычно падает, а источник где указатель портиться неизвестен, а это место весьма вероятно далеко от места падения. Идея была в том, чтобы перехватить в одном месте все попытки изменения указателя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 10:44 |
|
||
|
Перехват доступа по указателю
|
|||
|---|---|---|---|
|
#18+
Poppler, Ещё раз, нужны детали. Во-первых, какой у тебя компилятор? Во-вторых, ты ОДИН раз хочешь отдадить эту программу, или ты хочешь внедрить в код доп. средства, чтобы в рантайме поймать редкую ошибку и выйти в отладчик? Просто чтобы DebugBreak сработал, тебе нужно на машине иметь отладчик установленный, к нему для твоей программы нужна отладочная информация, и желательно программа должна быть собрана без оптимизации (/G0). Если трудности с именно кодом хитрого указателя -- возми код любого хитрого указателя в сети где-то, хотя бы из буста, или найди, и добавь туда проверки какие нужно. Ну и тебе придётся всю программу пересобрать, все модули. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 12:38 |
|
||
|
Перехват доступа по указателю
|
|||
|---|---|---|---|
|
#18+
откуда можно взять код smatp pointer-а: http://www.codeproject.com/Articles/15351/Implementing-a-simple-smart-pointer-in-c (Reference counting тебе не нужно). -- хорошо, потому что код независим абсолютно ни от чего. http://www.boost.org/doc/libs/1_53_0/libs/smart_ptr/scoped_ptr.htm (может быть немного проблемно выдрать код из буста) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 12:45 |
|
||
|
Перехват доступа по указателю
|
|||
|---|---|---|---|
|
#18+
PopplerMasterZivМожешь также просто поймать ... и обработать, можно SEH использовать, SEH даже лучше немного. Чем лучше? Нету информации где именно происходит изменение указателя и где мне нужно вставить критическую секцию. Ты сможешь поймать исключение не после выброса его, а в момент выброса, т.е. стек будет не раскручен. Подробности тут: http://msdn.microsoft.com/en-us/library/windows/desktop/ms680657%28v=vs.85%29.aspx А по PopplerНа данный момент известно только то, что указатель портится, известно в каком месте обычно падает, а источник где указатель портиться неизвестен, а это место весьма вероятно далеко от места падения. Идея была в том, чтобы перехватить в одном месте все попытки изменения указателя. -- все попытки изменения указателя ты НЕ перехватишь таким образом, ты перехватишь только попытки изменения его с помощью инициализации и присваивания. А ещё (и как правило так и происходит) может просто затираться память, это только отладчиком отлавливается, ставится прерывание по записи в память, используемую этим указателем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 12:51 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=82&tid=2020384]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 271ms |
| total: | 387ms |

| 0 / 0 |
