Powershell: вызовите отладочный анализатор cdb.exe как процесс - PullRequest
0 голосов
/ 25 февраля 2020

Мне нужно вызвать cdb.exe как Процесс, чтобы проверить, чтобы завершить процесс через несколько секунд. Некоторые дампы не могут быть проанализированы, поэтому я должен сделать другой вызов. Здесь вы можете увидеть мой код. Но это не работает. Cdb.exe не запускается правильно, и я не получаю выходной файл.

У вас есть какие-то советы для меня? Вызов «до» реализации части процесса запускает cdb.exe

   $maximumRuntimeSeconds = 3



            $path = "C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\cdb.exe"

            $process = Start-Process -FilePath $path "-z $unzippedFile.FullName, -c `".symfix;.reload;!analyze -v; q`""

            try {
                $process | Wait-Process -Timeout $maximumRuntimeSeconds -ErrorAction Stop > $outputFile
                Write-Warning -Message 'Process successfully completed within timeout.'
            }
            catch {
                Write-Warning -Message 'Process exceeded timeout, will be killed now.'
                $process | Stop-Process -Force
            }

            # call before implementing Process
            & "C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\cdb.exe" -z $unzippedFile.FullName -c ".symfix;.reload;!analyze -v; q" > $outputFile

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020
C:\>dir /b ok.txt
File Not Found

C:\>type dodump.ps1

$path = "C:\Program Files\Windows Kits\10\Debuggers\x86\cdb.exe"
$process = Start-Process -PassThru -FilePath $path -ArgumentList "-z `"C:\calc.DMP`"" ,
 "-c `".symfix;.reload;!analyze -v;q`"" -RedirectStandardOutput c:\\ok.txt

try {
$process | Wait-Process -Timeout 100 -ErrorAction Stop
Write-Host "Process finished within timeout"
}catch {
$process | Stop-Process
Write-Host "process killed"
}
Get-Content  C:\ok.txt |Measure-Object -Line

C:\>powershell -f dodump.ps1

Process finished within timeout
Lines Words Characters Property
139
0 голосов
/ 25 февраля 2020

-Passthru был необходим, чтобы заставить Wait-Process работать.

Я думаю, вам также нужно посмотреть, как расширяется строка в двойных кавычках. Я думаю, $ UnzippedFIle.Fullname может добавлять литерал «.FullName» в конце фактического полного имени zip-файла. У меня нет твоего окружения, но проверочные тесты, которые я сделал, показывают это. Попробуйте упаковать его в подвыражение вроде:

"-z $($unzippedFile.FullName), -c `".symfix;.reload;!analyze -v; q`""

Дайте мне знать, как это происходит. Спасибо.

...