Здравствуйте, Trapper, Вы писали:
M>>>>А можно глупый вопрос, как туда бряк поставить, вроде в проект его не добавить. Разьясните поподробней или дайте плз ссылочку.
IL>>>Если ты используешь debug-версию C runtime, то этот файл уже в твоем проекте (в libc.lib, libcmt.lib ...) IL>>>Так что открывай его, ставь бряк и пользуйся.
M>>А если я открываю его, ставлю бряк, а он мне говорит, что бряк будет disabled то это значит, что я не debug-версию использую или что не так файл открываю?
T>Хм.. странно. У меня вообще такого сообщения нет. Даже в релизной версии брекпоинт ставится нормально.
Кстати, по поводу этой ошибки, что нет такой перегрузки оператора new которая принимает 4 параметра. Ты ведь с ней сначала столкнулся...
Мне вот что интересно, в этой статье, что ты приводил написано
Об операторе new придётся позаботиться самостоятельно. В DCRT реализована отладочная версия оператора new:
void *operator new(
unsigned int cb,
int nBlockUse,
const char *szFileName,
int nLine
);
Необходимо перенаправить все обращения к new на эту версию. Для этого включите в программу следующий фрагмент.
Здравствуйте, mentor, Вы писали:
M>А если я открываю его, ставлю бряк, а он мне говорит, что бряк будет disabled то это значит, что я не debug-версию использую или что не так файл открываю?
а ты можешь остановиться на каком-нить операторе new,
и пройти его по шагам в отладчике?
через несколько шагов я оказываюсь в dbgheap.c
Здравствуйте, IamLexa, Вы писали:
M>>А если я открываю его, ставлю бряк, а он мне говорит, что бряк будет disabled то это значит, что я не debug-версию использую или что не так файл открываю?
IL>а ты можешь остановиться на каком-нить операторе new, IL>и пройти его по шагам в отладчике? IL>через несколько шагов я оказываюсь в dbgheap.c
Пройтись по шагам могу, но до dbgheap.c он не доходит. Вообще не могу попасть ни в какие файлы за пределами своего проекта, будь то CRT или что то из MFC хотя все исходники есть. Может что то еще надо настроить в среде, не знаю, подскажите.
Здравствуйте, Trapper, Вы писали:
M>>Может я неправильно понял, но отладочная версия хочет 4 параметра, а define передает ему только 3. Обьясните, в чем я неправ?
T>Если я не ошибаюсь, ещё надо передать количество байт, которое надо выделить. Но это делается автоматически.
Здравствуйте, mentor, Вы писали:
M>Пройтись по шагам могу, но до dbgheap.c он не доходит. Вообще не могу попасть ни в какие файлы за пределами своего проекта, будь то CRT или что то из MFC хотя все исходники есть. Может что то еще надо настроить в среде, не знаю, подскажите.
так сразу не скажу.
1) какая версия VStudio?
2) какая runtime библиотека используется? (в св-вах проекта C/C++ / Code Generation / Runtime Library)
3) где лежат исходники? (каталог)
4) есть pdb-файл для runtime библиотеки? где он лежит?
Здравствуйте, IamLexa, Вы писали:
IL>Здравствуйте, mentor, Вы писали:
M>>Пройтись по шагам могу, но до dbgheap.c он не доходит. Вообще не могу попасть ни в какие файлы за пределами своего проекта, будь то CRT или что то из MFC хотя все исходники есть. Может что то еще надо настроить в среде, не знаю, подскажите.
IL>так сразу не скажу. IL>1) какая версия VStudio? IL>2) какая runtime библиотека используется? (в св-вах проекта C/C++ / Code Generation / Runtime Library) IL>3) где лежат исходники? (каталог) IL>4) есть pdb-файл для runtime библиотеки? где он лежит?
1) VS 6.0
2) Debug Multithreaded DLL
3) E:\Andrew\tracebrowser\src\ (там несколько проектов)
основной E:\Andrew\tracebrowser\src\TraceBrowser\ только зачем это?
4) во втором пункте не написано имя, так что я не знаю, есть ли для этой библиотеке pdb файлик. Но лежат они по идее в "D:\Program Files\Microsoft Visual Studio\VC98\Lib\" во всяком случае какие то pdb там лежат
mentor wrote: > 1) VS 6.0 > 2) Debug Multithreaded DLL > 3) E:\Andrew\tracebrowser\src\ (там несколько проектов) > основной E:\Andrew\tracebrowser\src\TraceBrowser\ только зачем это? > 4) во втором пункте не написано имя, так что я не знаю, есть ли для этой библиотеке pdb файлик. Но лежат они по идее в "D:\Program Files\Microsoft Visual Studio\VC98\Lib\" во всяком случае какие то pdb там лежат
Здравствуйте, mentor, Вы писали:
M>1) VS 6.0
жаль. у меня 7.1
M>2) Debug Multithreaded DLL
значит используется msvcrt???.dll. вот только не знаю какая
наверно msvcrt60d.dll. лежать она должна в %WINDIR%\System32\ там же должен быть и pdb для нее.
есть такое?
когда под отладчиком загружается твой проект -- в окошке Output должно быть написано что-то типа
Loaded 'C:\WINDOWS\system32\msvcrt.dll', No symbols loaded.
Loaded 'C:\WINDOWS\system32\msvcrt???.dll', No symbols loaded.
есть там что-то подобное?
M>3) E:\Andrew\tracebrowser\src\ (там несколько проектов) M>основной E:\Andrew\tracebrowser\src\TraceBrowser\ только зачем это?
сорри. я имел в виду -- где лежат исходники runtime библиотеки?
M>4) во втором пункте не написано имя, так что я не знаю, есть ли для этой библиотеке pdb файлик. Но лежат они по идее в "D:\Program Files\Microsoft Visual Studio\VC98\Lib\" во всяком случае какие то pdb там лежат
ищи в %WINDIR%\System32\
Здравствуйте, IamLexa, Вы писали:
M>>1) VS 6.0 IL>жаль. у меня 7.1
M>>2) Debug Multithreaded DLL IL>значит используется msvcrt???.dll. вот только не знаю какая IL>наверно msvcrt60d.dll. лежать она должна в %WINDIR%\System32\ там же должен быть и pdb для нее. IL>есть такое? IL>когда под отладчиком загружается твой проект -- в окошке Output должно быть написано что-то типа IL>Loaded 'C:\WINDOWS\system32\msvcrt.dll', No symbols loaded. IL>Loaded 'C:\WINDOWS\system32\msvcrt???.dll', No symbols loaded. IL>есть там что-то подобное?
M>>3) E:\Andrew\tracebrowser\src\ (там несколько проектов) M>>основной E:\Andrew\tracebrowser\src\TraceBrowser\ только зачем это? IL>сорри. я имел в виду -- где лежат исходники runtime библиотеки?
M>>4) во втором пункте не написано имя, так что я не знаю, есть ли для этой библиотеке pdb файлик. Но лежат они по идее в "D:\Program Files\Microsoft Visual Studio\VC98\Lib\" во всяком случае какие то pdb там лежат IL>ищи в %WINDIR%\System32\
2) есть msvcrtd.dll
3) исходники в "D:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC\"
4) да, там лежит такая библеотека и pdb для нее. еще есть msvcrt.dll с pdb и еще msvcrt10(20, 40).dll они без pdb
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>mentor wrote: >> 1) VS 6.0 >> 2) Debug Multithreaded DLL >> 3) E:\Andrew\tracebrowser\src\ (там несколько проектов) >> основной E:\Andrew\tracebrowser\src\TraceBrowser\ только зачем это? >> 4) во втором пункте не написано имя, так что я не знаю, есть ли для этой библиотеке pdb файлик. Но лежат они по идее в "D:\Program Files\Microsoft Visual Studio\VC98\Lib\" во всяком случае какие то pdb там лежат
PD>Попробуй переустановить SP6 для VC
А кстати, у меня походу наверное вообще SP ни одного не стоит. Что, надо поставить шестой? Постараюсь найти...
mentor wrote: > > Здравствуйте, Pavel Dvorkin, Вы писали:
> А кстати, у меня походу наверное вообще SP ни одного не стоит. Что, надо поставить шестой? Постараюсь найти...
Здравствуйте, mentor, Вы писали:
M>2) есть msvcrtd.dll M>3) исходники в "D:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC\" M>4) да, там лежит такая библеотека и pdb для нее. еще есть msvcrt.dll с pdb и еще msvcrt10(20, 40).dll они без pdb
RE:
когда под отладчиком загружается твой проект -- в окошке Output должно быть написано что-то типа
Loaded 'C:\WINDOWS\system32\msvcrt.dll', No symbols loaded.
Loaded 'C:\WINDOWS\system32\msvcrt???.dll', No symbols loaded.
есть там что-то подобное?
хочется понять -- кого твой проект грузит
кстати, IL>а ты можешь остановиться на каком-нить операторе new, IL>и пройти его по шагам в отладчике? IL>через несколько шагов я оказываюсь в dbgheap.c
M>Пройтись по шагам могу,
если ты входишь в оператор new -- VStudio тебе показывает окошко Disassembler'а?
там кажись в контекстном меню был пункт "Go to Source code..."
-- там VStudio не предлагает указать, где лежит исходник из CRT?
M>>2) есть msvcrtd.dll M>>3) исходники в "D:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC\" M>>4) да, там лежит такая библеотека и pdb для нее. еще есть msvcrt.dll с pdb и еще msvcrt10(20, 40).dll они без pdb
IL>RE: IL>когда под отладчиком загружается твой проект -- в окошке Output должно быть написано что-то типа
вот такая строчка есть IL>Loaded 'C:\WINDOWS\system32\msvcrt.dll', No symbols loaded.
и есть строчка для msvcrtd.dll IL>Loaded 'C:\WINDOWS\system32\msvcrt???.dll', No symbols loaded.
больше для msvcrt*.dll строчек нет
IL>есть там что-то подобное? IL>хочется понять -- кого твой проект грузит
IL>кстати, IL>>а ты можешь остановиться на каком-нить операторе new, IL>>и пройти его по шагам в отладчике? IL>>через несколько шагов я оказываюсь в dbgheap.c
M>>Пройтись по шагам могу,
IL>если ты входишь в оператор new -- VStudio тебе показывает окошко Disassembler'а? IL>там кажись в контекстном меню был пункт "Go to Source code..." IL>-- там VStudio не предлагает указать, где лежит исходник из CRT?
Нет, окошка дизассемблера нет. Просто у меня new используется для создания экземпляров классов, вызывается соответственно конструктор и все.
Здравствуйте, mentor, Вы писали:
IL>>когда под отладчиком загружается твой проект -- в окошке Output должно быть написано что-то типа M>вот такая строчка есть IL>>Loaded 'C:\WINDOWS\system32\msvcrt.dll', No symbols loaded. M>и есть строчка для msvcrtd.dll
значица нужно смотреть на msvcrtd.dll и msvcrtd.pdb.
оба этих файла лежат в System32 и даты у них совпадают?
кстати, идея поставить SP -- оч. правильная.
это должно помочь.
Здравствуйте, IamLexa, Вы писали:
IL>>>когда под отладчиком загружается твой проект -- в окошке Output должно быть написано что-то типа M>>вот такая строчка есть IL>>>Loaded 'C:\WINDOWS\system32\msvcrt.dll', No symbols loaded. M>>и есть строчка для msvcrtd.dll
IL>значица нужно смотреть на msvcrtd.dll и msvcrtd.pdb. IL>оба этих файла лежат в System32 и даты у них совпадают?
Лежат оба. Но даты совсем не совпадают. dll 2003 год а pdb 1998 — го года
IL>кстати, идея поставить SP -- оч. правильная. IL>это должно помочь.
Это попробую конечно. Но пока еще в сетке локальной его не нашел. Что то 70 мег качать с инета так сразу не очень охота.
Здравствуйте, mentor, Вы писали:
IL>>значица нужно смотреть на msvcrtd.dll и msvcrtd.pdb. IL>>оба этих файла лежат в System32 и даты у них совпадают?
M>Лежат оба. Но даты совсем не совпадают. dll 2003 год а pdb 1998 — го года
по всей видимости они у тебя разъехались. кто-то положил новую dll, а pdb к ней не обновил.
можешь попробовать найти на диске VStudio файлы msvcrtd.dll и msvcrtd.pdb и скопировать их в System32.
ну или может кто-нить тебе их пришлет.
PS.
а если это не критично -- можно в проекте использовать статическую runtime library.
Здравствуйте, IamLexa, Вы писали:
IL>>>значица нужно смотреть на msvcrtd.dll и msvcrtd.pdb. IL>>>оба этих файла лежат в System32 и даты у них совпадают?
M>>Лежат оба. Но даты совсем не совпадают. dll 2003 год а pdb 1998 — го года
IL>по всей видимости они у тебя разъехались. кто-то положил новую dll, а pdb к ней не обновил. IL>можешь попробовать найти на диске VStudio файлы msvcrtd.dll и msvcrtd.pdb и скопировать их в System32. IL>ну или может кто-нить тебе их пришлет.
Я так подозреваю, что dll-ки шли в поставке вместе с виндой, и потому при установке студии не были заменены более старыми с диска, а pdb-ки как раз те, что на диске студии. Так что мне, скоперовать более старые dll-ки?
IL>PS. IL>а если это не критично -- можно в проекте использовать статическую runtime library.
Здравствуйте, mentor, Вы писали:
M>Здравствуйте, IamLexa, Вы писали:
IL>>>>значица нужно смотреть на msvcrtd.dll и msvcrtd.pdb. IL>>>>оба этих файла лежат в System32 и даты у них совпадают?
M>>>Лежат оба. Но даты совсем не совпадают. dll 2003 год а pdb 1998 — го года
IL>>по всей видимости они у тебя разъехались. кто-то положил новую dll, а pdb к ней не обновил. IL>>можешь попробовать найти на диске VStudio файлы msvcrtd.dll и msvcrtd.pdb и скопировать их в System32. IL>>ну или может кто-нить тебе их пришлет.
M>Я так подозреваю, что dll-ки шли в поставке вместе с виндой, и потому при установке студии не были заменены более старыми с диска, а pdb-ки как раз те, что на диске студии. Так что мне, скоперовать более старые dll-ки?
странно. не знал, что винда ставит дебаг-версию msvcrtd.dll
да, я бы скопировал более старую msvcrtd.dll -- чтобы она соответсвовала pdb-шке.
Здравствуйте, IamLexa, Вы писали:
IL>>>>>значица нужно смотреть на msvcrtd.dll и msvcrtd.pdb. IL>>>>>оба этих файла лежат в System32 и даты у них совпадают?
M>>>>Лежат оба. Но даты совсем не совпадают. dll 2003 год а pdb 1998 — го года
IL>>>по всей видимости они у тебя разъехались. кто-то положил новую dll, а pdb к ней не обновил. IL>>>можешь попробовать найти на диске VStudio файлы msvcrtd.dll и msvcrtd.pdb и скопировать их в System32. IL>>>ну или может кто-нить тебе их пришлет.
M>>Я так подозреваю, что dll-ки шли в поставке вместе с виндой, и потому при установке студии не были заменены более старыми с диска, а pdb-ки как раз те, что на диске студии. Так что мне, скоперовать более старые dll-ки?
IL>странно. не знал, что винда ставит дебаг-версию msvcrtd.dll IL>да, я бы скопировал более старую msvcrtd.dll -- чтобы она соответсвовала pdb-шке.
Может конечно и не винда, какая нибудь другая прога свои прописала библиотеки. Во всяком случае мне замена помогла. Спасибо.