Re[14]: Проблема с отловом утечек памяти
От: mentor Россия  
Дата: 23.08.04 08:36
Оценка:
Здравствуйте, 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 на эту версию. Для этого включите в программу следующий фрагмент.

#ifdef _DEBUG
#ifdef _CRTDBG_MAP_ALLOC
#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
#endif /* _CRTDBG_MAP_ALLOC */
#endif /* _DEBUG */


Может я неправильно понял, но отладочная версия хочет 4 параметра, а define передает ему только 3. Обьясните, в чем я неправ?
Re[13]: Проблема с отловом утечек памяти
От: IamLexa  
Дата: 23.08.04 08:39
Оценка:
Здравствуйте, mentor, Вы писали:

M>А если я открываю его, ставлю бряк, а он мне говорит, что бряк будет disabled то это значит, что я не debug-версию использую или что не так файл открываю?


а ты можешь остановиться на каком-нить операторе new,
и пройти его по шагам в отладчике?
через несколько шагов я оказываюсь в dbgheap.c
Re[15]: Проблема с отловом утечек памяти
От: Trapper  
Дата: 23.08.04 08:43
Оценка:
M>
M>#ifdef _DEBUG
M>#ifdef _CRTDBG_MAP_ALLOC
M>#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
M>#endif /* _CRTDBG_MAP_ALLOC */
M>#endif /* _DEBUG */
M>


M>Может я неправильно понял, но отладочная версия хочет 4 параметра, а define передает ему только 3. Обьясните, в чем я неправ?


Если я не ошибаюсь, ещё надо передать количество байт, которое надо выделить. Но это делается автоматически.
Trapper
Re[14]: Проблема с отловом утечек памяти
От: mentor Россия  
Дата: 23.08.04 08:54
Оценка:
Здравствуйте, IamLexa, Вы писали:

M>>А если я открываю его, ставлю бряк, а он мне говорит, что бряк будет disabled то это значит, что я не debug-версию использую или что не так файл открываю?


IL>а ты можешь остановиться на каком-нить операторе new,

IL>и пройти его по шагам в отладчике?
IL>через несколько шагов я оказываюсь в dbgheap.c

Пройтись по шагам могу, но до dbgheap.c он не доходит. Вообще не могу попасть ни в какие файлы за пределами своего проекта, будь то CRT или что то из MFC хотя все исходники есть. Может что то еще надо настроить в среде, не знаю, подскажите.
Re[16]: Проблема с отловом утечек памяти
От: mentor Россия  
Дата: 23.08.04 08:55
Оценка:
Здравствуйте, Trapper, Вы писали:

M>>Может я неправильно понял, но отладочная версия хочет 4 параметра, а define передает ему только 3. Обьясните, в чем я неправ?


T>Если я не ошибаюсь, ещё надо передать количество байт, которое надо выделить. Но это делается автоматически.


Ясно. Раз автоматически то ладно.
Re[15]: Проблема с отловом утечек памяти
От: IamLexa  
Дата: 23.08.04 09:05
Оценка:
Здравствуйте, mentor, Вы писали:

M>Пройтись по шагам могу, но до dbgheap.c он не доходит. Вообще не могу попасть ни в какие файлы за пределами своего проекта, будь то CRT или что то из MFC хотя все исходники есть. Может что то еще надо настроить в среде, не знаю, подскажите.


так сразу не скажу.
1) какая версия VStudio?
2) какая runtime библиотека используется? (в св-вах проекта C/C++ / Code Generation / Runtime Library)
3) где лежат исходники? (каталог)
4) есть pdb-файл для runtime библиотеки? где он лежит?
Re[16]: Проблема с отловом утечек памяти
От: mentor Россия  
Дата: 23.08.04 09:16
Оценка:
Здравствуйте, 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 там лежат
Re[17]: Проблема с отловом утечек памяти
От: Pavel Dvorkin Россия  
Дата: 23.08.04 09:20
Оценка:
Привет!

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 там лежат

Попробуй переустановить SP6 для VC

--
With best regards,
Pavel Dvorkin
Posted via RSDN NNTP Server 1.7 "Bedlam"
With best regards
Pavel Dvorkin
Re[17]: Проблема с отловом утечек памяти
От: IamLexa  
Дата: 23.08.04 09:32
Оценка:
Здравствуйте, 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\
Re[18]: Проблема с отловом утечек памяти
От: mentor Россия  
Дата: 23.08.04 09:43
Оценка:
Здравствуйте, 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
Re[18]: Проблема с отловом утечек памяти
От: mentor Россия  
Дата: 23.08.04 09:44
Оценка:
Здравствуйте, 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 ни одного не стоит. Что, надо поставить шестой? Постараюсь найти...
Re[19]: Проблема с отловом утечек памяти
От: Pavel Dvorkin Россия  
Дата: 23.08.04 09:49
Оценка:
Привет!

mentor wrote:
>
> Здравствуйте, Pavel Dvorkin, Вы писали:

> А кстати, у меня походу наверное вообще SP ни одного не стоит. Что, надо поставить шестой? Постараюсь найти...


Лучше поставить

http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx

--
With best regards,
Pavel Dvorkin
Posted via RSDN NNTP Server 1.7 "Bedlam"
With best regards
Pavel Dvorkin
Re[19]: Проблема с отловом утечек памяти
От: IamLexa  
Дата: 23.08.04 09:55
Оценка:
Здравствуйте, 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?
Re[20]: Проблема с отловом утечек памяти
От: mentor Россия  
Дата: 23.08.04 10:02
Оценка:
Здравствуйте, IamLexa, Вы писали:


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 используется для создания экземпляров классов, вызывается соответственно конструктор и все.
Re[21]: Проблема с отловом утечек памяти
От: IamLexa  
Дата: 23.08.04 10:34
Оценка:
Здравствуйте, mentor, Вы писали:

IL>>когда под отладчиком загружается твой проект -- в окошке Output должно быть написано что-то типа

M>вот такая строчка есть
IL>>Loaded 'C:\WINDOWS\system32\msvcrt.dll', No symbols loaded.
M>и есть строчка для msvcrtd.dll

значица нужно смотреть на msvcrtd.dll и msvcrtd.pdb.
оба этих файла лежат в System32 и даты у них совпадают?

кстати, идея поставить SP -- оч. правильная.
это должно помочь.
Re[22]: Проблема с отловом утечек памяти
От: mentor Россия  
Дата: 23.08.04 10:37
Оценка:
Здравствуйте, 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 мег качать с инета так сразу не очень охота.
Re[23]: Проблема с отловом утечек памяти
От: IamLexa  
Дата: 23.08.04 10:47
Оценка: 2 (1)
Здравствуйте, mentor, Вы писали:

IL>>значица нужно смотреть на msvcrtd.dll и msvcrtd.pdb.

IL>>оба этих файла лежат в System32 и даты у них совпадают?

M>Лежат оба. Но даты совсем не совпадают. dll 2003 год а pdb 1998 — го года


по всей видимости они у тебя разъехались. кто-то положил новую dll, а pdb к ней не обновил.
можешь попробовать найти на диске VStudio файлы msvcrtd.dll и msvcrtd.pdb и скопировать их в System32.
ну или может кто-нить тебе их пришлет.

PS.
а если это не критично -- можно в проекте использовать статическую runtime library.
Re[24]: Проблема с отловом утечек памяти
От: mentor Россия  
Дата: 23.08.04 11:02
Оценка:
Здравствуйте, 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.
Re[25]: Проблема с отловом утечек памяти
От: IamLexa  
Дата: 23.08.04 11:12
Оценка:
Здравствуйте, 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-шке.
Re[26]: Проблема с отловом утечек памяти
От: mentor Россия  
Дата: 23.08.04 11:29
Оценка:
Здравствуйте, 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-шке.

Может конечно и не винда, какая нибудь другая прога свои прописала библиотеки. Во всяком случае мне замена помогла. Спасибо.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.