У меня символы сохраняются в папку (сейчас же нельзя , как раньше, скачать и все, надо чтоб оно с серверов майкрософта качало); посмотрел - там уже 3.5 гига этого добра, причем допустим для кернелбейс штук 20 pdb файлов, для других длл подобная картина. Почему так , кто знает? И есть ли в них смысл, мб поудалять? Файлы разные, если что, т.е. чем-то они отличаются по идее, но не пойму, или мс так часто их обновляет или я что-то криво настроил.
Считай, почти на каждое обновление новые kernelbase/kernel32/ntdll. Обновляются часто, поэтому на каждую версию своя pdb'шка. Можешь всё поудалять, при необходимости все актуальные символы подгрузятся снова.
Подниму тему. Вот каждое обновление начинаю дебажить, и ... минут на 30 можно куда-то уходить. Т.к. качает символы очень медленно. Можно ли как-то все же выкачать их наперед ? Допустим, программа раз в неделю/месяц проверяет символы и ночью выкачивает для каждой длл.. Как-то же оно работает, качают же символы студия, Ида и т.д.
под ту ось откуда запущено вроде ну или можно поразбираться Code (Text): symchk [/r] [/q] [Input options] <Filename> [/s <SymbolPath>] [options] <Filename> Name of the file or directory that contains the executables to perform symbol checking on. /s <SymbolPath> Semi-colon separated list of symbol paths. Symbol server paths are allowed. To retrieve symbols to a downstream store, use "SRV*<downstream store>*<symbol server>" for the symbol path. See the debugger documentation for more details. /r Perform recursive operations on the <Filename> specified. The wildcard * can be used in filenames. /q Turn off all output options by default. Only output turned on with a output flag (see below) will be printed -------------------------------------------------------------------------------- * Input options (choose only one): /if <Filename> Input is a file name. Wildcards can be used to specify the file name. Default if nothing is specified. /id <DumpFile> Input is a dump file. /ih <HotFix> Input is a self-extracting Hotfix cab. /ie <ExeName> Input is an application name that is currently running. If the provided ExeName is '*', all currently running processes will be checked. /im <ManifestList> Input is a manifest previously created using the /om <file> option. /ip <ProcessId> Input is a process id. If the provided ProcessID is '*', all currently running processes will be checked. /it <TextFileList> Input is a list of files, one per line, inside of a text file. -------------------------------------------------------------------------------- * Action options (choose only one): /av For each binary, Verify symbols exist and match. Default. -------------------------------------------------------------------------------- * Symbol checking options: /cc when symbol checking a hotfix cab, don't look for symbols inside the cab. By default, symchk will look for symbols in the cab as well as in the provided symbol path. /cn When symbol checking a running process, don't suspend that process. User must ensure the process doesn't exit before symbol checking finishes. /cs Skip verifying that there is CodeView data. Symchk will verify that there IS codeview data by default. - Symbol checking options for DBG information (choose one): /ds If image was built so that there is information that belongs in a DBG file, then this option verifies that the DBG information is stripped from the image and that the image points to a DBG file. Default. /de If image was built so that there is information that belongs in a DBG file, then this option verifies that the DBG information is STILL in the image and that the image does not point to a DBG file. /dn Verify that the image does not point to a DBG file and that DBG information is not in the image. - Symbol checking options for PDB files: /pa Allow both public and private PDBs. Default. /pf Verify that PDB files contain full source information. /ps Verify that PDB files are stripped and do not contain full source (private) information. /pt Verify that PDB files are stripped, but do have type information. Some PDB files may be stripped but have type information added back in. -------------------------------------------------------------------------------- * Symbol checking exclude options: /ea <Filename> Don't perform symbol checking for the binaries listed in the file specified. <Filename> is a text file that contains the name of each binary, one per line. /ee <Filename> Perform symbol checking and report files that pass or are ignored, but don't report errors for binaries listed in the file specified. <Filename> is a text file that contains the name of each binary, one per line. -------------------------------------------------------------------------------- * Symbol path options: /s[eprsu] <SymbolPath> Use <SymbolPath> as the search path. NOTE: If the '/s' option is not used, SymChk defaults to using the value in %_NT_SYMBOL_PATH%. If %_NT_SYMBOL_PATH% is not defined, then SymChk will default to: SRV*%SYSTEMROOT%\SYMBOLS*https://msdl.microsoft.com/download/symbols * Modifiers (choose all that apply): e - check each path individually instead of checking all paths at once. p - force checking for private symbols. Public symbols will be treated as not matching. (Implies the 'e' and 'u' modifiers.) r - Expand all non-symbol server elements in the specified path in order to d o a deep search of the path. NOTE: This option may produce matches that wil l not occur inside the debugger since it modifies the symbol path specified . s - force checking for public (split) symbols. Private symbols will be treated as not matching. (Implies the 'e' and 'u' modifiers.) u - force updating of downstream stores. If the symbol path includes a downstream store, always re-check the server for the symbol. Only stores that are checked against will be updated. NOTE: The 's' and 'p' options are mutually exclusive. Only the last one present will be used. -------------------------------------------------------------------------------- * Output options (choose all that apply): /ob Give the full path for binaries in the output messages for symbol checking. /oc[x[a]] <Directory> Create a flat symbols tree in <Directory> which contains all matching symbols. If 'x' is also used, copy the matching binaries into <Directory> as well. If 'a' is also present, the binary will always be copied to the flat symbol tree even if symbol checking failed. /od List all details. Same as /oe /op /oi /oe List individual errors. Errors will be sent to the output by default. This option is only needed when using /q /oi List each file that is ignored. /op List each file that passes. /os Give the full path for symbols in the output messages for symbol checking. /ot Send totals to the output. Totals are sent to the output by default. This option is only needed when using /q /ov Print version information for checked binaries as well. - Extended output options: /ol <File> In addition to the messages sent to standard out, write a file that contains a comma separated list of all the binaries and their symbols that pass symbol checking. /om <Manifest> Print out a manifest file for later use with the '/im' option. /v Turn on verbose output mode. -------------------------------------------------------------------------------- * Module filtering options when checking processes or dump files (choose one): /fm <Module> Filter results to only include the named module. -------------------------------------------------------------------------------- * Misc options /port Old usage to new usage quick porting table --------------------------------------------------------------------------------
M0rg0t, > каждое обновление начинаю дебажить Переходи на норм инструменты, автоматику. Ручная отладка уже мало пригодна.
Artem_N, спасибо, попробую; мне так и надо. в данном случае автоматика не вариант. Я пишу код в студии, потом в ней же и дебажу. Это удобнее чем любой отладчик или визор, т.к. видны локальные переменные и т.д., но долго качает символы (какой-то combase вообще минут 15).
Попробуй выставить в настройках Debug->Options->Debugging->Symbols->Load only specified modules. Возможно тебе будет их достаточно, чтобы отлаживаться. При желании можно дописать нужные или исключить ненужные. Прогружается все моментально при таких настройках.