Re: Дебагер. "Невидимые" точки останова | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
А пример исходного кода строки с командой, на которой останавливается?
Может, это те строки, после которых программа ждет действий от пользователя? Исправлено 1 раз(а). Последнее : akvvohinc, 18.08.11 20:59 |
Re: Дебагер. "Невидимые" точки останова | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Уверен что оно ИМЕННО приостанавливается (т.е. переходит в пошаговый режим), а не просто висит на каком-нить DO FORM или oSomeForm.Show(1)
И ещё приведи имена файлов/методов/классов и номера строк - где ставишь точку и где "оно само". ------------------ WBR, Igor |
Re: Дебагер. "Невидимые" точки останова | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Ты не поставил никакого знака пунктуации в конце предложения. Так это вопрос или утверждение? |
Re: Дебагер. "Невидимые" точки останова | |
---|---|
Pashka_J Автор Сообщений: 59 Дата регистрации: 15.11.2006 |
Не-а |
Re: Дебагер. "Невидимые" точки останова | |
---|---|
Pashka_J Автор Сообщений: 59 Дата регистрации: 15.11.2006 |
select csJpg go top scan if file(cPicPathWeb+alltrim(csJpg.name)) lError=.f. && 1024x768 lcs=filetostr(cPicPathWeb+alltrim(csJpg.name)) lcs = strconv(lcs, 13) if !oSvc.MkLocalResizedPic(alltrim(csJpg.name),alltrim(csJpg.name),1024,758,.f.,72,72,@lcs) lError=.t. endif if !lError lcs=strconv(lcs,14) && <---- останавливается здесь RandFileName=sys(3)+"-"+left(sys(3),4)+"-"+left(sys(3),4)+"-"+left(sys(3),4)+"-"+sys(3)+left(sys(3),4) strtofile(lcs,cPicPathLocal+RandFileName+"."+justext(csJpg.name)) && 64x48 lcs=filetostr(cPicPathWeb+alltrim(csJpg.name)) lcs = strconv(lcs, 13) if !oSvc.MkLocalResizedPic(alltrim(csJpg.name),alltrim(csJpg.name),64,48,.f.,72,72,@lcs) lError=.t. endif if !lError lcs = strconv(lcs, 14) strtofile(lcs,cPicPathLocal+RandFileName+"i."+justext(csJpg.name)) replace indpicname with RandFileName+"."+justext(csJpg.name) endif endif endif if lError insert into csErrPic (dprid) values (csJpg.zdid) endif select csJpg endscan delete From csjpg where empty(indpicname)&& <--- тут настоящая точка останова |
Re: Дебагер. "Невидимые" точки останова | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Нет никаких "невидимых точек останова".
Да и откуда бы им вообще взяться? В случае сомнения - отключи полностью файл ресурсов через SET RESOURCE OFF, после чего на всякий случай даже проверь наличие на компьютере на всех путях доступа файлов с таким именем, удалив их. После чего включи ресурс снова. И там не то что невидимых, и видимых точек не должно остаться.
Ну так очевидно же - проблема с файлом-путем в lcs. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Дебагер. "Невидимые" точки останова | |
---|---|
Pashka_J Автор Сообщений: 59 Дата регистрации: 15.11.2006 |
В чем очевидность ? Строка отрабатывается штатно в пошаговом и в боевом режиме. Останавливается - не значит ошибка выскакивает. Просто остнанавлиается как на брекпоинте. Шагаю дальше - все ОК. |
Re: Дебагер. "Невидимые" точки останова | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Это был конечно же вопрос
Указаная команда не выглядит "криминально" - разве что находится на 13-й строке И интересно, что в момент сбоя покажет
------------------ WBR, Igor |
Re: Дебагер. "Невидимые" точки останова | |
---|---|
Pashka_J Автор Сообщений: 59 Дата регистрации: 15.11.2006 |
в начале символы 0х04, 0х00. Далее DBGCFGVERSION=4 BPMESSAGE=ON BREAKPOINT BEGIN TYPE=0 FILE=c:\app\vfptest\fox2sql.prg LINE=460 DISABLED=0 EXACT=0 BREAKPOINT END BREAKPOINT BEGIN TYPE=0 FILE=c:\app\vfptest\fox2sql.prg LINE=456 DISABLED=0 EXACT=0 BREAKPOINT END BREAKPOINT BEGIN TYPE=0 FILE=c:\app\vfptest\fox2sql.prg LINE=194 DISABLED=0 EXACT=0 BREAKPOINT END BREAKPOINT BEGIN TYPE=0 FILE=c:\app\vfptest\fox2sql.prg LINE=262 DISABLED=0 EXACT=0 BREAKPOINT END BREAKPOINT BEGIN TYPE=0 FILE=c:\app\vfptest\fox2sql.prg LINE=264 DISABLED=0 EXACT=0 BREAKPOINT END Из всего этого реальная точка останова (которая видна) это строка 262. Остальные почему-то остались с предыдущего запуска отладчика. Но точки на строке 226 (lcs=strconv(lcs,14), на которой и останавливается непонятно почему) в этом списке все равно нет |
Re: Дебагер. "Невидимые" точки останова | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
А какой тип данных и какое значение в момент останова имеет lcs? ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Дебагер. "Невидимые" точки останова | |
---|---|
Pashka_J Автор Сообщений: 59 Дата регистрации: 15.11.2006 |
string. значение - закодированный с помощью Convert.ToBase64String jpg файл. тоесть тоже строка |
Re: Дебагер. "Невидимые" точки останова | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Т.е. если скажем попросту поставить рядом всего лишь две этих строки - получение значения и конвертирование - куда-нибудь например в совершенно отдельный модуль, в этом случае какое поведение? ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Дебагер. "Невидимые" точки останова | |
---|---|
Pashka_J Автор Сообщений: 59 Дата регистрации: 15.11.2006 |
Сделал так: *lcs=strconv(lcs,14) lcst=testfunc(lcs) lcs=lcst и функцию function testfunc(llcs) return strconv(llcs,14) Теперь останавливается на lcs=lcst |
Re: Дебагер. "Невидимые" точки останова | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Т.е. в итоге к "невидимым точкам останова" теперь уже этот новый модуль ничего больше не привязывает? ;) И остается только разобраться, что не так с данной функцией я так понимаю? ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Дебагер. "Невидимые" точки останова | |
---|---|
Pashka_J Автор Сообщений: 59 Дата регистрации: 15.11.2006 |
С какой функцией? останов идет в строке lcs=lcst |
Re: Дебагер. "Невидимые" точки останова | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Ну не суть важно где. Факт, что с точками останова теперь-то не связано? Значит нужно искать причину в другом. Смотреть в частности что там с типами, и все ли считывается и преобразуется нормально. Размеры переменных например глянуть. Короче копать в сторону каких-то несоответствий. Кстати говоря про "новый модуль" я имел в виду именно написанный с нуля, желательно и без использования (на всякий случай) одноименных с существующими уже в старых модулях собственных функций. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) Исправлено 1 раз(а). Последнее : Crispy, 22.08.11 14:32 |
Re: Дебагер. "Невидимые" точки останова | |
---|---|
Pashka_J Автор Сообщений: 59 Дата регистрации: 15.11.2006 |
Изначально было непонятно с чем связано. Точки останова я назвал потому ,что ... они и есть точки останова отладка останавливается. С типами/размерами может что и есть, но неявное. Что-то, что заставляет отладчик тормозить (еще раз - если не ставить точки явные - все проходит на ура и нигде не останавливается) Вариантов несколько. Или все-таки точка где-то записана (а не только в файле ресурсов), или останов по изменении значения определенной переменной (но где-то это тоже должно быть записано) или, но это уже бага внутри фокса, при передаче строкового значения какие-то сочетания символов вызывают останов. |
Re: Дебагер. "Невидимые" точки останова | |
---|---|
comsel Сообщений: 947 Откуда: Москва Дата регистрации: 20.09.2007 |
Ошибки в этой строке нет? Может сообщение об ошибке подавляется?
|
Re: Дебагер. "Невидимые" точки останова | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Очень странно - такое поведение было бы характерно при наличии точки останова на "изменнее значения переменной" (но тогда должно было бы останавливаться и на первом же lcs=), или же "получения выражением значения .T." - однако таких точек останова в приведенном дампе foxuser-а нет... Кстати, проще всего точки останова первого типа деляются в окне Watch - если туда добавить искомый lcS (или выражение его включающее) и дважды кликнуть по полоске слева от этой строчки.
Кстати, в prg реально имеется 460 строк? Может какое-то хитрое "заворачивание нумерации" происходит? Удали вручную из этой записи foxuser все точки кроме одной на 262 строку (первые 2 байта не трогай - там и должно быть 0h0400), перезапусти фокс и ешё раз проверь. ------------------ WBR, Igor |
Re: Дебагер. "Невидимые" точки останова | |
---|---|
Pashka_J Автор Сообщений: 59 Дата регистрации: 15.11.2006 |
В prg около 950 строк.
Сообщения об ошибках если есть-выводятся (не подавляются то есть). Что значит "хитрое заворачивание нумарации" ? Может и оно, только что это такое? Удалил все записи о бреках из фоксюзер - все равно то же самое. Инетерсно: поменял так (прошляпил if и в результате переменная lcst ваще отсутствовала до вызова последней строки: if !oSvc.MkLocalResizedPic(alltrim(csJpg.name),alltrim(csJpg.name),1024,758,.f.,72,72,@lcs) lError=.t. lcst=lcs endif if !lError lcst=strconv(lcst,14) И таки в отладчике программа остановилась на lcst=strconv(lcst,14) при дальнейшем шаге выдала ошибку. То есть вывод - с функцией не связано. Остается или тайное местоположение записи точки останова или останов по имени переменной, но это бред, ибо выше она уже менялась и использовалась не раз. Вернулись к тому, с чего начали - всё непонятно |
© 2000-2024 Fox Club  |