Одна опция состоит в том, чтобы оставить файлы символов, где они ( т.е. в выходной папке сборки ) и затем используют параметр командной строки-y WinDbg для определения местоположения этих файлов. Используя этот подход должен гарантировать, что файлы символов всегда быть актуальными.
От Microsoft Help:
-y SymbolPath
Specifies the symbol search path. Separate multiple paths with a
semicolon (;). If the path contains spaces, it should be enclosed
in quotation marks. For details, and for other ways to change this
path, see Symbol Path.
Я использую rel2abs
из File :: Spec . Однако вы должны быть осторожны: это может вызвать getdcwd
из Cwd
и будет предполагать, что вам нужен текущий рабочий каталог для текущего диска. Если файл находится на другом диске, вам придется исправить это самостоятельно или указать второй аргумент для установки базового пути.
Я использую abs_path Cwd, а затем использую регулярное выражение для преобразования косой черты, когда мне действительно это нужно. Но я обнаружил, что в большинстве случаев косые черты в стиле Unix работают нормально. Только изредка «передать имя файла этой досадно ограниченной программе» мне приходится преобразовывать косые черты.
use Cwd 'abs_path';
my $path = abs_path($rel_path);
# and only if necessary...
$path =~ s'[/\\]+'\\'g; # use Windows-style slashes
$path =~ s'^\\'\\\\'; # handle network path
Но потом ... Я использую множество сетевых путей, с привязкой к диску или без нее. Ваш пробег может отличаться.
use File::Spec::Functions qw(rel2abs);
print rel2abs($ARGV[0]), "\n";
my($foo) = abs_path($some_file);
$foo =~ s{/}{\\}g;
print "FOO: $foo\n";