:: Visual Foxpro, Foxpro for DOS
Re: Дебагер. "Невидимые" точки останова
akvvohinc

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
А пример исходного кода строки с командой, на которой останавливается?

Может, это те строки, после которых программа ждет действий от пользователя?



Исправлено 1 раз(а). Последнее : akvvohinc, 18.08.11 20:59
Ratings: 0 negative/0 positive
Re: Дебагер. "Невидимые" точки останова
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Уверен что оно ИМЕННО приостанавливается (т.е. переходит в пошаговый режим), а не просто висит на каком-нить DO FORM или oSomeForm.Show(1)
И ещё приведи имена файлов/методов/классов и номера строк - где ставишь точку и где "оно само".


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Дебагер. "Невидимые" точки останова
akvvohinc

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
Уверен что оно ИМЕННО приостанавливается (т.е. переходит в пошаговый режим), а не просто висит на каком-нить DO FORM или oSomeForm.Show(1)
Ты не поставил никакого знака пунктуации в конце предложения.
Так это вопрос или утверждение?
Ratings: 0 negative/0 positive
Re: Дебагер. "Невидимые" точки останова
Pashka_J
Автор

Сообщений: 59
Дата регистрации: 15.11.2006
Extortioner
WbrErr
На какой команде?
ГыГы - извините не сдержался - на SET STEP ON
Не-а
Ratings: 0 negative/0 positive
Re: Дебагер. "Невидимые" точки останова
Pashka_J
Автор

Сообщений: 59
Дата регистрации: 15.11.2006
akvvohinc
А пример исходного кода строки с командой, на которой останавливается?
Может, это те строки, после которых программа ждет действий от пользователя?

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)&& <--- тут настоящая точка останова
Ratings: 0 negative/0 positive
Re: Дебагер. "Невидимые" точки останова
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Нет никаких "невидимых точек останова".
Да и откуда бы им вообще взяться? В случае сомнения - отключи полностью файл ресурсов через SET RESOURCE OFF, после чего на всякий случай даже проверь наличие на компьютере на всех путях доступа файлов с таким именем, удалив их. После чего включи ресурс снова. И там не то что невидимых, и видимых точек не должно остаться.

Pashka_J
...
lcs=filetostr(cPicPathWeb+alltrim(csJpg.name))
...
lcs=strconv(lcs,14) && <---- останавливается здесь
...

Ну так очевидно же - проблема с файлом-путем в lcs.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Дебагер. "Невидимые" точки останова
Pashka_J
Автор

Сообщений: 59
Дата регистрации: 15.11.2006
Crispy
Pashka_J
...
lcs=filetostr(cPicPathWeb+alltrim(csJpg.name))
...
lcs=strconv(lcs,14) && <---- останавливается здесь
...

Ну так очевидно же - проблема с файлом-путем в lcs.

В чем очевидность ? Строка отрабатывается штатно в пошаговом и в боевом режиме.
Останавливается - не значит ошибка выскакивает. Просто остнанавлиается как на брекпоинте. Шагаю дальше - все ОК.
Ratings: 0 negative/0 positive
Re: Дебагер. "Невидимые" точки останова
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Это был конечно же вопрос
Указаная команда не выглядит "криминально" - разве что находится на 13-й строке
И интересно, что в момент сбоя покажет
USE (SYS(2005)) AGAIN SHARED ALIAS res
LOCATE FOR ID = 'BPOINT'
? res.data


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Дебагер. "Невидимые" точки останова
Pashka_J
Автор

Сообщений: 59
Дата регистрации: 15.11.2006
Igor Korolyov
И интересно, что в момент сбоя покажет
USE (SYS(2005)) AGAIN SHARED ALIAS res
LOCATE FOR ID = 'BPOINT'
? res.data
в начале символы 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), на которой и останавливается непонятно почему) в этом списке все равно нет
Ratings: 0 negative/0 positive
Re: Дебагер. "Невидимые" точки останова
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Pashka_J
Но точки на строке 226 (lcs=strconv(lcs,14), на которой и останавливается непонятно почему) в этом списке все равно нет

А какой тип данных и какое значение в момент останова имеет lcs?


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Дебагер. "Невидимые" точки останова
Pashka_J
Автор

Сообщений: 59
Дата регистрации: 15.11.2006
Crispy
Pashka_J
Но точки на строке 226 (lcs=strconv(lcs,14), на которой и останавливается непонятно почему) в этом списке все равно нет

А какой тип данных и какое значение в момент останова имеет lcs?
string. значение - закодированный с помощью Convert.ToBase64String jpg файл. тоесть тоже строка
Ratings: 0 negative/0 positive
Re: Дебагер. "Невидимые" точки останова
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Pashka_J
Crispy
Pashka_J
Но точки на строке 226 (lcs=strconv(lcs,14), на которой и останавливается непонятно почему) в этом списке все равно нет

А какой тип данных и какое значение в момент останова имеет lcs?
string. значение - закодированный с помощью Convert.ToBase64String jpg файл. тоесть тоже строка

Т.е. если скажем попросту поставить рядом всего лишь две этих строки - получение значения и конвертирование - куда-нибудь например в совершенно отдельный модуль, в этом случае какое поведение?


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Дебагер. "Невидимые" точки останова
Pashka_J
Автор

Сообщений: 59
Дата регистрации: 15.11.2006
Crispy
Т.е. если скажем попросту поставить рядом всего лишь две этих строки - получение значения и конвертирование - куда-нибудь например в совершенно отдельный модуль, в этом случае какое поведение?

Сделал так:

*lcs=strconv(lcs,14)
lcst=testfunc(lcs)
lcs=lcst

и функцию

function testfunc(llcs)
return strconv(llcs,14)

Теперь останавливается на lcs=lcst
Ratings: 0 negative/0 positive
Re: Дебагер. "Невидимые" точки останова
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Pashka_J
Теперь останавливается на lcs=lcst

Т.е. в итоге к "невидимым точкам останова" теперь уже этот новый модуль ничего больше не привязывает? ;)
И остается только разобраться, что не так с данной функцией я так понимаю?


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Дебагер. "Невидимые" точки останова
Pashka_J
Автор

Сообщений: 59
Дата регистрации: 15.11.2006
Crispy
Pashka_J
Теперь останавливается на lcs=lcst

Т.е. в итоге к "невидимым точкам останова" теперь уже этот новый модуль ничего больше не привязывает? ;)
И остается только разобраться, что не так с данной функцией я так понимаю?

С какой функцией? останов идет в строке lcs=lcst
Ratings: 0 negative/0 positive
Re: Дебагер. "Невидимые" точки останова
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Pashka_J
С какой функцией? останов идет в строке lcs=lcst

Ну не суть важно где. Факт, что с точками останова теперь-то не связано?
Значит нужно искать причину в другом. Смотреть в частности что там с типами, и все ли считывается и преобразуется нормально. Размеры переменных например глянуть. Короче копать в сторону каких-то несоответствий. Кстати говоря про "новый модуль" я имел в виду именно написанный с нуля, желательно и без использования (на всякий случай) одноименных с существующими уже в старых модулях собственных функций.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 1 раз(а). Последнее : Crispy, 22.08.11 14:32
Ratings: 0 negative/0 positive
Re: Дебагер. "Невидимые" точки останова
Pashka_J
Автор

Сообщений: 59
Дата регистрации: 15.11.2006
Crispy
Pashka_J
С какой функцией? останов идет в строке lcs=lcst
Ну не суть важно где. Факт, что с точками останова теперь-то не связано?
Значит нужно искать причину в другом. Смотреть в частности что там с типами, и все ли считывается и преобразуется нормально. Размеры переменных например глянуть.

Изначально было непонятно с чем связано. Точки останова я назвал потому ,что ... они и есть точки останова отладка останавливается. С типами/размерами может что и есть, но неявное. Что-то, что заставляет отладчик тормозить (еще раз - если не ставить точки явные - все проходит на ура и нигде не останавливается)
Вариантов несколько. Или все-таки точка где-то записана (а не только в файле ресурсов), или останов по изменении значения определенной переменной (но где-то это тоже должно быть записано) или, но это уже бага внутри фокса, при передаче строкового значения какие-то сочетания символов вызывают останов.
Ratings: 0 negative/0 positive
Re: Дебагер. "Невидимые" точки останова
comsel

Сообщений: 947
Откуда: Москва
Дата регистрации: 20.09.2007
Ошибки в этой строке нет? Может сообщение об ошибке подавляется?
Ratings: 0 negative/0 positive
Re: Дебагер. "Невидимые" точки останова
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Очень странно - такое поведение было бы характерно при наличии точки останова на "изменнее значения переменной" (но тогда должно было бы останавливаться и на первом же lcs=), или же "получения выражением значения .T." - однако таких точек останова в приведенном дампе foxuser-а нет... Кстати, проще всего точки останова первого типа деляются в окне Watch - если туда добавить искомый lcS (или выражение его включающее) и дважды кликнуть по полоске слева от этой строчки.
Кстати, в prg реально имеется 460 строк? Может какое-то хитрое "заворачивание нумерации" происходит? Удали вручную из этой записи foxuser все точки кроме одной на 262 строку (первые 2 байта не трогай - там и должно быть 0h0400), перезапусти фокс и ешё раз проверь.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
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) при дальнейшем шаге выдала ошибку. То есть вывод - с функцией не связано. Остается или тайное местоположение записи точки останова или останов по имени переменной, но это бред, ибо выше она уже менялась и использовалась не раз. Вернулись к тому, с чего начали - всё непонятно
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 26 (Гостей: 26)

© 2000-2024 Fox Club 
Яндекс.Метрика