launch.vs.json şema başvurusu (C++)

Visual Studio 2017 ve sonraki sürümlerinde, çözüm veya proje dosyası gerektirmeden neredeyse tüm dizin tabanlı projelerden kod açabilir ve oluşturabilirsiniz. Proje veya çözüm dosyası olmadığında, JSON yapılandırma dosyaları aracılığıyla özel derleme görevleri belirtebilir ve parametreleri başlatabilirsiniz. Bu makalede, hata ayıklama parametrelerini belirten dosya açıklanmaktadır launch.vs.json . "Klasör Aç" özelliği hakkında daha fazla bilgi için bkz . Visual Studio'da proje veya çözüm olmadan kod geliştirme.

Dosyayı oluşturmak için, Çözüm Gezgini'da yürütülebilir bir dosyaya sağ tıklayın ve Hata Ayıklama ve Başlatma Ayarları'nı seçin. Projenizle en yakın eşleşen seçeneği belirleyin ve yapılandırmayı gerektiği gibi değiştirmek için aşağıdaki özellikleri kullanın. CMake projelerinde hata ayıklama hakkında daha fazla bilgi için bkz . CMake hata ayıklama oturumlarını yapılandırma.

Varsayılan özellikler

Özellik Türü Açıklama
args dizi Başlatılan programa geçirilen komut satırı bağımsız değişkenlerini belirtir.
buildConfigurations dizi Yapılandırmaları uygulamak için derleme modunun adını belirten bir anahtar-değer çifti. Örneğin veya Debug Release ve seçili derleme moduna göre kullanılacak yapılandırmalar.
currentDir Dize Derleme Hedefi'nin tam dizin yolunu belirtir. Bu parametre ayarlanmadığı sürece dizin otomatik olarak algılanır.
cwd Dize Programın çalıştırılacağı uzak sistemdeki dizinin tam yolu. Varsayılan değer: "${debugInfo.defaultWorkingDirectory}"
debugType Dize Hata ayıklama modunu kod türüne (yerel, yönetilen veya karma) göre belirtir. Bu parametre ayarlanmadığı sürece mod otomatik olarak algılanır. İzin verilen değerler: "native", "managed", "mixed".
env dizi Özel ortam değişkenlerinin anahtar-değer listesini belirtir. Örneğin: env:{"myEnv":"myVal"}.
inheritEnvironments dizi Birden çok kaynaktan devralınan ortam değişkenleri kümesini belirtir. veya CppProperties.json gibi CMakeSettings.json dosyalarda bazı değişkenler tanımlayabilir ve bunların hata ayıklama bağlamı için kullanılabilir olmasını sağlayabilirsiniz. Visual Studio 16.4: Söz dizimini env.VARIABLE_NAME kullanarak hedef başına ortam değişkenlerini belirtin. Bir değişkenin kümesini açmak için "null"olarak ayarlayın.
name Dize Başlangıç Öğesi açılan listesinde girdinin adını belirtir.
noDebug boolean Başlatılan programda hata ayıklama yapılıp yapılmayacağını belirtir. Bu parametre için varsayılan değer belirtilmezse olur false .
portName Dize Çalışan bir işleme eklenirken bağlantı noktasının adını belirtir.
program Dize Yürütülecek hata ayıklama komutu. varsayılan değeridir "${debugInfo.fullTargetPath}".
project Dize Proje dosyasının göreli yolunu belirtir. Normalde, bir CMake projesinde hata ayıklarken bu değeri değiştirmeniz gerekmez.
projectTarget Dize oluştururken projectçağrılan isteğe bağlı hedefi belirtir. Hedef, Başlangıç Öğesi açılan menüsündeki adla eşleşmelidir.
stopOnEntry boolean İşlem başlatılır başlatılmaz ve hata ayıklayıcı eklendiğinde bir kesme yapılıp yapılmayacağını belirtir. Bu parametre için varsayılan değerdir false.
remoteMachine Dize Programın başlatıldığı uzak makinenin adını belirtir.
type Dize Projenin .exe için bir dll mi yoksa exe Varsayılan mı olduğunu belirtir

C++ Linux özellikleri

Özellik Türü Veri Akışı Açıklaması
program Dize Uzak makinede program yürütülebilir dosyasının tam yolu. CMake kullanılırken, makro ${debugInfo.fullTargetPath} bu alanın değeri olarak kullanılabilir.
processId integer Hata ayıklayıcının eklendiği isteğe bağlı işlem kimliği.
sourceFileMap nesne hata ayıklama altyapısına geçirilen isteğe bağlı kaynak dosya eşlemeleri. Biçim: { "\<Compiler source location>": "\<Editor source location>" } veya { "\<Compiler source location>": { "editorPath": "\<Editor source location>", "useForBreakpoints": true } }. Örnek: { "/home/user/foo": "C:\\foo" } veya { "/home/user/foo": { "editorPath": "c:\\foo", "useForBreakpoints": true } }. Daha fazla bilgi için bkz . Kaynak dosya eşleme seçenekleri.
additionalProperties Dize sourceFileMapOptions kaynaklarından biri. (Aşağıya bakın.)
MIMode Dize MIDebugEngine'in bağlanacağı MI özellikli konsol hata ayıklayıcısının türünü gösterir. İzin verilen değerler şunlardır: "gdb", "lldb".
args dizi Programa geçirilen komut satırı bağımsız değişkenleri.
environment dizi Programın ortamına eklenecek ortam değişkenleri. Örnek: [ { "name": "squid", "value": "clam" } ].
targetArchitecture Dize Debuggee mimarisi. Bu parametre ayarlanmadığı sürece mimari otomatik olarak algılanır. İzin verilen değerler : x86, arm, arm64, mips, x64, , amd64. x86_64
visualizerFile Dize Bu işlemde hata ayıklarken kullanılacak .natvis dosyası. Bu seçenek GDB güzel yazdırma ile uyumlu değildir. Bu ayarı kullanıp kullanmadığınıza bakın "showDisplayString" .
showDisplayString boolean VisualizerFile belirtildiğinde, showDisplayString görüntü dizesini etkinleştirir. Bu seçeneğin açılması hata ayıklama sırasında performansı yavaşlatabilir.
remoteMachineName Dize gdb'yi barındıran uzak Linux makinesi ve hata ayıklama programı. Yeni Linux makineleri eklemek için Bağlantı Yöneticisi kullanın. CMake kullanılırken, makro ${debugInfo.remoteMachineName} bu alanın değeri olarak kullanılabilir.
miDebuggerPath Dize MI özellikli hata ayıklayıcının yolu (gdb gibi). Belirtilmezse, hata ayıklayıcı için önce PATH araması yapacaktır.
miDebuggerServerAddress Dize Bağlanacak MI özellikli hata ayıklayıcısı sunucusunun ağ adresi. Örnek: "localhost:1234".
setupCommands dizi Temel alınan hata ayıklayıcıyı ayarlamak için yürütülecek bir veya daha fazla GDB/LLDB komutu. Örnek: "setupCommands": [ { "text": "-enable-pretty-printing", "description": "Enable GDB pretty printing", "ignoreFailures": true }]. Daha fazla bilgi için bkz . Kurulum komutlarını başlatma.
customLaunchSetupCommands dizi Sağlanırsa, bu değer hedefi başlatmak için kullanılan varsayılan komutların yerine başka komutlar ekler. Örneğin, hedef işleme eklemek için "-target-attach" kullanın. Boş bir komut listesi başlatma komutlarının yerini hiçbir şey almaz. Bu, hata ayıklayıcıya komut satırı seçenekleri olarak başlatma seçenekleri sağlanıyorsa yararlı olabilir. Örnek: "customLaunchSetupCommands": [ { "text": "target-run", "description": "run target", "ignoreFailures": false }].
launchCompleteCommand Dize Hata ayıklayıcı tamamen ayarlandıktan sonra yürütülecek komut, hedef işlemin çalıştırılmasına neden olur. İzin verilen değerler "exec-run", "exec-continue", "None" değerleridir. Varsayılan değer "exec-run"dır.
debugServerPath Dize Başlatma için sunucuda hata ayıklamak için isteğe bağlı tam yol. Varsayılan değer null'tır.
debugServerArgs Dize İsteğe bağlı hata ayıklama sunucusu birleştirmeleri. Varsayılan değer null'tır.
filterStderr boolean Çıkışta hata ayıklamak için stderr akışında sunucu tarafından başlatılan desen ve günlük stderr araması yapın. varsayılan değeridir false.
coreDumpPath Dize Belirtilen program için çekirdek döküm dosyasının isteğe bağlı tam yolu. Varsayılan değer null'tır.
externalConsole boolean True ise, debuggee için bir konsol başlatılır. ise false, hiçbir konsol başlatılmaz. Bu ayar için varsayılan değerdir false. Bu seçenek bazı durumlarda teknik nedenlerle yoksayılır.
pipeTransport Dize Mevcut olduğunda, bu değer hata ayıklayıcıya Visual Studio ile MI özellikli hata ayıklayıcısı (gdb gibi) arasında standart giriş/çıkış geçişi yapacak bir kanal olarak başka bir yürütülebilir dosya kullanarak uzak bir bilgisayara bağlanmasını söyler. İzin verilen değerler: bir veya daha fazla Boru Aktarım Seçeneği.

debugInfo makroları

Aşağıdaki makrolar hata ayıklama ortamı hakkında bilgi sağlar. Bunlar, hata ayıklama için uygulamanızın başlatılmasını özelleştirmek için kullanışlıdır.

Makro Açıklama Örnek
addressSanitizerRuntimeFlags Adres dezenfektanının davranışını özelleştirmek için kullanılan çalışma zamanı bayrakları. ortam değişkenini "ASAN_OPTIONS"ayarlamak için kullanılır. "env": {"ASAN_OPTIONS": "${addressSanitizerRuntimeFlags}:anotherFlag=true"}
defaultWorkingDirectory dizininin dizin bölümüne "fullTargetPath"ayarlayın. CMake değişkeni VS_DEBUGGER_WORKING_DIRECTORY tanımlanmışsa, bunun defaultWorkingDirectory yerine bu değere ayarlanır. "cwd":"${debugInfo.defaultWorkingDirectory}"
fullTargetPath Hata ayıklanan ikili dosyasının tam yolu. "program": "${debugInfo.fullTargetPath}"
linuxNatvisPath VS linux .natvis dosyasının tam windows yolu. Genellikle değeri "visualizerFile"olarak görünür.
parentProcessId Geçerli Visual Studio örneğinin işlem kimliği. shellexec parametresi olarak kullanılır. Aşağıdaki pipeTransport örneğine bakın.
remoteMachineId Uzak makineye bağlantı için benzersiz, sayısal bir tanımlayıcı. shellexec parametresi olarak kullanılır. Aşağıdaki pipeTransport örneğine bakın.
remoteWorkspaceRoot Çalışma alanının uzak kopyasının Linux yolu. Uzak makinede dosya konumlarını belirtin. Örneğin: "args": ["${debugInfo.remoteWorkspaceRoot}/Data/MyInputFile.dat"]
resolvedRemoteMachineName Hedef uzak makinenin adı. "targetMachine" dağıtım yönergesindeki değer
shellexecPath Visual Studio'nın uzak makine bağlantısını yönetmek için kullandığı shellexec programının yolu. Aşağıdaki pipeTransport örneğine bakın
tty gdb, hata ayıklanan program için giriş ve çıkışı bu cihaza yeniden yönlendirir. gdb (-tty) parametresi olarak kullanılır. Aşağıdaki pipeTransport örneğine bakın.
windowsSubsystemPath Linux için Windows Alt Sistemi örneğinin tam yolu.

Aşağıdaki pipeTransport örneği, yukarıda tanımlanan bazı debugInfo makroların nasıl kullanılacağını gösterir:

"pipeTransport": {
    "pipeProgram": "${debugInfo.shellexecPath}",
    "pipeArgs": [
        "/s",
        "${debugInfo.remoteMachineId}",
        "/p",
        "${debugInfo.parentProcessId}",
        "/c",
        "${debuggerCommand}",
        "--tty=${debugInfo.tty}"
    ],
    "pipeCmd": [
        "/s",
        "${debugInfo.remoteMachineId}",
        "/p",
        "${debugInfo.parentProcessId}",
        "/c",
        "${debuggerCommand}"
    ]
    }

C++ Windows uzaktan hata ayıklama ve dağıtma özellikleri

Uzak bir makinede bir uygulamada hata ayıklama ve dağıtma sırasında kullanılır.

Özellik Türü Veri Akışı Açıklaması
cwd Dize Uzak makinedeki hedefin çalışma dizini. CMake kullanılırken, makro ${debugInfo.defaultWorkingDirectory} bu alanın değeri olarak kullanılabilir. Varsayılan değer, hata ayıklama programının/komutunun dizinidir.
deploy Dize Dağıtılacak ek dosyaları veya dizinleri belirtir. Örneğin:
"deploy": {"sourcePath":"<Full path to source file/directory on host machine>", "targetPath":"<Full destination path to file/directory on target machine>"}
deployDirectory Dize Proje çıkışlarının otomatik olarak dağıtıldığı uzak makinedeki konum. Varsayılan olarak "C:\Windows Default Deploy Directory\<name of app>
deployDebugRuntimeLibraries Dize Etkin platform için hata ayıklama çalışma zamanı kitaplıklarının dağıtılıp dağıtılmayacağını belirtir. "true" Varsayılan olarak etkin configurationType değeri"Debug"
deployRuntimeLibraries Dize Etkin platform için çalışma zamanı kitaplıklarının dağıtılıp dağıtılmayacağını belirtir. "true" Etkin configurationType değeri , "RelWithDebInfo"veya "Release"ise varsayılan olarak "MinSizeRel"ayarlanır.
disableDeploy boolean Dosyaların dağıtılıp dağıtılmayacağını belirtir.
remoteMachineName Dize Programın başlatıldığı uzak ARM64 Windows makinesinin adını belirtir. Sunucu adı veya uzak makinenin IP adresi olabilir.
authenticationType Dize Uzak bağlantının türünü belirtir. Olası değerler ve "none"şeklindedir"windows". Varsayılan değer: "windows". Bu değer, uzak makinede çalışan uzak hata ayıklayıcıda belirtilen kimlik doğrulama ayarıyla eşleşmelidir.

Kurulum komutlarını başlatma

Özelliğiyle kullanılır setupCommands :

Özellik Türü Veri Akışı Açıklaması
text Dize Yürütülecek hata ayıklayıcısı komutu.
description Dize Komut için isteğe bağlı açıklama.
ignoreFailures boolean True ise, komuttan gelen hatalar yoksayılmalıdır. varsayılan değeridir false.

Boru taşıma seçenekleri

Özelliğiyle kullanılır pipeTransport :

Özellik Türü Veri Akışı Açıklaması
pipeCwd Dize Kanal programı için çalışma dizininin tam yolu.
pipeProgram Dize Yürütülecek tam kanal komutu.
pipeArgs dizi Bağlantıyı yapılandırmak için kanal programına geçirilen komut satırı bağımsız değişkenleri.
debuggerPath Dize Hedef makinedeki hata ayıklayıcının tam yolu, örneğin /usr/bin/gdb.
pipeEnv nesne Kanal programına geçirilen ortam değişkenleri.
quoteArgs boolean Bağımsız değişkenler karakter (boşluk veya sekme gibi) içeriyorsa, tırnak içine alınmalıdır? ise false, hata ayıklayıcısı komutu artık otomatik olarak tırnak içine alınmaz. Varsayılan true değeridir.

Kaynak dosya eşleme seçenekleri

Özelliğiyle kullanın sourceFileMap :

Özellik Türü Veri Akışı Açıklaması
editorPath Dize Düzenleyicinin bulabilmek için kaynak kodunun konumu.
useForBreakpoints boolean Kesme noktaları ayarlanırken bu kaynak eşleme kullanılmalıdır. ise false, kesme noktalarını ayarlamak için yalnızca dosya adı ve satır numarası kullanılır. ise true, kesme noktaları yalnızca bu kaynak eşleme kullanıldığında dosyanın tam yolu ve satır numarasıyla ayarlanır. Aksi takdirde kesme noktaları ayarlanırken yalnızca dosya adı ve satır numarası kullanılır. Varsayılan true değeridir.