srctool утверждает, что он извлек исходные файлы, но просто перечисляет их URL

У меня есть PDB с индексом источника, но Visual Studio не пытается загрузить соответствующий источник при отладке (проверено с помощью Fiddler), даже несмотря на то, что он создает правильную структуру каталогов в кеше символов (то есть в подкаталоге src/). Для устранения проблемы я использовал srctool.exe:

srctool -x myfile.pdb

Тем не менее, это просто вызывает URL-адреса в списке; он не пытается их скачать:

https://myurl.com/bitbucket/projects/BLAH/repos/MyRepo/browse/Src/SomeDir/SomeFile.cs?at=05bff5155beece6c7e6acde97f7aeefc7b65e2cf&raw
...
myfile.pdb: 20 source files were extracted.

Вывод pdbstr следующий:

SRCSRV: ini ------------------------------------------------    
VERSION=2    
SRCSRV: variables ------------------------------------------
RAWURL=https://myurl.com/bitbucket/projects/BLAH/repos/MyRepo/browse/%var2%?at=05bff5155beece6c7e6acde97f7aeefc7b65e2cf&raw    
SRCSRVVERCTRL=https    
SRCSRVTRG=%RAWURL%    
SRCSRV: source files ---------------------------------------   
E:\AnotherDir\work\9f49bd3ba978a6f5\Main\Src\SomeDir\SomeFile*Src/SomeDir/SomeFile
...
SRCSRV: end ------------------------------------------------

Если бы кто-нибудь мог указать мне правильное направление, чтобы выяснить, что происходит, я был бы очень признателен.

1 ответ

Решение

SRCSRV не работает с URL-адресами запросов (см. Эту проблему и эту проблему).

Если вы используете общедоступный репозиторий Bitbucket, вы можете использовать шаблон, подобный этому приемочному тесту; то есть,

RAWURL=https://bitbucket.org/BLAH/MyRepro/raw/05bff5155beece6c7e6acde97f7aeefc7b65e2cf/%var2%

Однако я не уверен, что частные установки Bitbucket поддерживают этот вид синтаксиса. Проверьте эту проблему для получения дополнительной информации - из моего краткого прочтения выясняется, что они поддерживают необработанные файлы без строк запроса, но неясно, можно ли указать хеш коммита без строки запроса.

Судя по комментариям по другим вопросам, похоже, что общий обходной путь (для частных установок Bitbucket) заключается в настройке перезаписи URL или небольшого сквозного веб-сервиса, который может принимать URL-адреса, удобные для SRCSRV.


относительно srctool Я считаю, что его вывод немного вводит в заблуждение, но технически правильно. Он ведет себя так же для правильно проиндексированных PDB, которые VS может загрузить.

PDB, отображенные таким образом, указывают SRCSRVTRG (цель) но не SRCSRVCMD (команда загрузки). Предполагается, что SRCSRV проверит цель и - если файла там нет - выполнит команду загрузки:

Затем он расширяет переменную SRCSRVTRG, используя VAR1 до VARn. Если файл уже находится в этом месте, он возвращает местоположение вызывающей стороне.

В противном случае он расширяет переменную SRCSRVCMD для создания команды, необходимой для извлечения файла из системы управления исходным кодом и копирования его в целевое местоположение. Наконец, он выполняет эту команду.

В этом случае целями являются фактические URL-адреса HTTPS. Технически, файл уже находится в этом месте, поэтому SRCSRV просто возвращает местоположение файла, и srctool сообщает, что он уже есть (с вводящим в заблуждение "извлеченным" сообщением).

Когда VS действительно загружает файл, он сохраняет его локально в кеше символов, но это еще один шаг в этом процессе; хранить его там не обязательно.

Другие вопросы по тегам