2008 Visual Studio (C++) обнаружение утечки памяти, не показывающее местоположение файла/метода - как заставить это работать?

Вы желаете контролировать производительность, или просто видеть, какие запросы выполняются? Если последний, можно настроить MySQL для входа всех запросов, он дан. На поле RedHat Linux Вы могли бы добавить

log = /var/lib/mysql/query.log

к [mysqld] разделу /etc/my.cnf прежде, чем перезапустить MySQL.

Помнят, что в занятом сценарии базы данных, те журналы могут стать довольно большими.

8
задан Tim 14 October 2009 в 18:36
поделиться

1 ответ

Вы уверены, что утечка кода использует процедуры распределения отладки CRT? Для этого необходимо использовать malloc () или new (в отличие от LocalAlloc , GlobalAlloc , некоторого настраиваемого распределителя блоков и т. Д.) И что _DEBUG (я думаю) должен быть определен, когда были включены заголовки CRT.

Чтобы получить исходные строки для утечек, вам нужно будет определить DEBUG_NEW везде, где происходят выделения . Это связано с тем, что для их отслеживания каждое выделение необходимо заменить вызовом, который включает __ FILE __ и __ LINE __ . Стандартное определение от мастера выглядит примерно так:

#ifdef _DEBUG
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new DEBUG_NEW
#endif

Это не обрабатывает malloc , для этого, вероятно, есть похожее заклинание,

6
ответ дан 5 December 2019 в 22:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: