CMake hata ayıklama oturumlarını yapılandırma
Yerel CMake desteği Visual Studio 2017 ve sonraki sürümlerde kullanılabilir. Bu sürümlerin belgelerini görmek için bu makalenin Visual Studio Sürüm seçici denetimini Visual Studio 2017 veya üzeri olarak ayarlayın. Bu sayfadaki içindekiler tablosunun en üstünde bulunur.
Tüm yürütülebilir CMake hedefleri, araç çubuğundaki Başlangıç Öğesi açılan listesinde gösterilir. Hata ayıklama oturumu başlatmak ve hata ayıklayıcısını başlatmak için birini seçin.
Açılan liste, aralarından seçim yapabileceğiniz hata ayıklama hedeflerinin listesini sağlar. Seçili öğe oynat düğmesi olarak görünür ve ardından çalıştırılacak seçili hata ayıklama hedefinin adı görüntülenir. Bu örnekte, seçilen hata ayıklama hedefi Merhaba Dünya .exe.
Hata ayıklama oturumunu Çözüm Gezgini da başlatabilirsiniz. İlk olarak, Çözüm Gezgini penceresinde CMake Hedefleri Görünümü'ne geçin.
Çözüm gezgini gösterilir. Klasör Görünümü'nde bir öğeye sağ tıklamak, Aç, Şununla aç, Şununla karşılaştır vb. seçenekleri gösteren bir menü açtı. Hedefler Görünümüne Geç menü öğesi vurgulanır.
Ardından yürütülebilir dosyaya sağ tıklayın ve Hata Ayıkla'yı seçin. Bu komut, etkin yapılandırmanıza göre seçilen hedefte hata ayıklamayı otomatik olarak başlatır.
CMake Hedefleri görünümünde bir hedefe sağ tıklama işlemi Başlangıç öğesi olarak ayarla, Derleme, Tümünü Temizle gibi seçeneklerin yer aldığı bir menü açtı. Hata Ayıkla menü seçeneği vurgulanır.
Visual Studio 2022 Sürüm 17.6'dan başlayarak, CMakeLists.txt dosyanızda bir hata ayıklama oturumu da başlatabilirsiniz. Bunu yapmak için, CMakeLists.txt dosyanızda bir kesme noktası ayarlayın ve Proje açılan listesindeN Projeyi CMake Hata Ayıklayıcısı ile Yapılandır'ı çalıştırın.
Proje açılan listesi gösterilir. Projeyi CMake hata ayıklayıcısı ile yapılandırma menü seçeneği vurgulanır.
Hata ayıklayıcısı ayarlarını özelleştirme
Projenizdeki herhangi bir yürütülebilir CMake hedefi için hata ayıklayıcı ayarlarını özelleştirebilirsiniz. Bunlar, proje kökünüzdeki bir klasörde bulunan launch.vs.json adlı bir .vs
yapılandırma dosyasında bulunur. Hata ayıklama kurulum ayrıntılarınızı yapılandırıp kaydedebildiğiniz için, başlatma yapılandırma dosyası çoğu hata ayıklama senaryosunda kullanışlıdır. Bu dosyanın üç giriş noktası vardır:
- Hata Ayıklama Menüsü: Etkin hata ayıklama hedefinize özgü hata ayıklama yapılandırmasını özelleştirmek için ana menüden ${activeDebugTarget} için Hata Ayıklama ve Başlatma Ayarları'nı seçin>. Bir hata ayıklama hedefiniz seçili değilse, bu seçenek gri görünür.
- Hedefler Görünümü: Çözüm Gezgini'de Hedefler Görünümü'ne gidin. Ardından, bir hata ayıklama hedefine sağ tıklayın ve seçilen hedefe özgü hata ayıklama yapılandırmasını özelleştirmek için Hata Ayıklama Yapılandırması Ekle'yi seçin.
- Kök CMakeLists.txt: Bir kök CMakeLists.txt sağ tıklayın ve Hata Ayıklayıcı Seç iletişim kutusunu açmak için Hata Ayıklama Yapılandırması Ekle'yi seçin. İletişim kutusu her tür hata ayıklama yapılandırması eklemenize olanak tanır, ancak özelliği aracılığıyla çağrılacak CMake hedefini
projectTarget
el ile belirtmeniz gerekir.
İstediğiniz sayıda CMake hedefi için hata ayıklama yapılandırmaları oluşturmak üzere launch.vs.json dosyasını düzenleyebilirsiniz. Dosyayı kaydettiğinizde, Visual Studio Başlangıç Öğesi açılan listesinde her yeni yapılandırma için bir girdi oluşturur.
CMakeSettings.json başvuru anahtarları
CMakeSettings.json bir dosyadaki herhangi bir anahtara başvurmak için launch.vs.json cmake.
dosyasına ekleyin. Aşağıdaki örnekte, seçili durumdaki yapılandırma için CMakeSettings.json dosyasındaki anahtarın remoteCopySources
değerini çeken basit bir launch.vs.json dosyası gösterilmektedir:
{
"version": "0.2.1",
"configurations": [
{
"type": "default",
"project": "CMakeLists.txt",
"projectTarget": "CMakeHelloWorld.exe (Debug\\CMakeHelloWorld.exe)",
"name": "CMakeHelloWorld.exe (Debug\\CMakeHelloWorld.exe)",
"args": ["${cmake.remoteCopySources}"]
}
]
}
CMakeSettings.json'de tanımlanan ortam değişkenleri, söz dizimi ${env.VARIABLE_NAME}
kullanılarak launch.vs.json'de de kullanılabilir. Visual Studio 2019 sürüm 16.4 ve sonraki sürümlerinde, hata ayıklama hedefleri CMakeSettings.json belirttiğiniz ortam kullanılarak otomatik olarak başlatılır. Ortam değişkenlerini null olarak ayarlayarak kümeyi kaldırabilirsiniz.
Launch.vs.json başvurusu
Tüm hata ayıklama senaryolarınızı desteklemek için birçok launch.vs.json özelliği vardır. Aşağıdaki özellikler hem uzak hem de yerel tüm hata ayıklama yapılandırmalarında ortaktır:
projectTarget
: Projeyi oluştururken çağrılacak CMake hedefini belirtir. Hata Ayıklama Menüsü veya Hedefler Görünümü'nden launch.vs.json girerseniz Visual Studio bu özelliği otomatik olarak doldurulur. Bu değer, Başlangıç Öğesi açılan listesinde listelenen mevcut bir hata ayıklama hedefinin adıyla eşleşmelidir.env
: Söz dizimi kullanılarak eklenecek ek ortam değişkenleri:"env": { "DEBUG_LOGGING_LEVEL": "trace;info", "ENABLE_TRACING": "true" }
args
: Hata ayıklamak için programa geçirilen komut satırı bağımsız değişkenleri.
Uzak projeler ve WSL için Launch.vs.json başvurusu
Visual Studio 2019 sürüm 16.6'da, uzak sistemlerde ve WSL'de hata ayıklamayı basitleştirmek için yeni bir hata ayıklama yapılandırması type: cppgdb
ekledik. eski hata ayıklama yapılandırmaları type: cppdbg
hala desteklenmektedir.
Yapılandırma türü cppgdb
name
: Başlangıç Öğesi açılan listesinde yapılandırmayı tanımlamak için kolay bir ad.project
: Proje dosyasının göreli yolunu belirtir. Normalde, bir CMake projesinde hata ayıklarken bu yolu değiştirmeniz gerekmez.projectTarget
: Projeyi oluştururken çağrılacak CMake hedefini belirtir. Hata Ayıklama Menüsü veya Hedefler Görünümü'nden launch.vs.json girerseniz Visual Studio bu özelliği otomatik olarak doldurulur. Bu hedef değerin Başlangıç Öğesi açılan listesinde listelenen mevcut hata ayıklama hedefinin adıyla eşleşmesi gerekir.debuggerConfiguration
: Hangi hata ayıklama varsayılan değerlerinin kullanılacağını gösterir. Visual Studio 2019 sürüm 16.6'da tek geçerli seçenektirgdb
. Visual Studio 2019 sürüm 16.7 veya üzeri de desteklergdbserver
.args
: Başlangıçta hata ayıklanan programa geçirilen komut satırı bağımsız değişkenleri.env
: Hata ayıklanan programa geçirilen ek ortam değişkenleri. Örneğin,{"DISPLAY": "0.0"}
.processID
: Eklenecek Linux işlem kimliği. Yalnızca uzak işleme iliştirirken kullanılır. Daha fazla bilgi için bkz . GDB kullanarak işlemlere ekleme sorunlarını giderme.
Yapılandırma için gdb
ek seçenekler
program
: varsayılan değeridir"${debugInfo.fullTargetPath}"
. Hata ayıklamak için uygulamanın Unix yolu. Yalnızca derleme veya dağıtım konumundaki hedef yürütülebilir dosyadan farklıysa gereklidir.remoteMachineName
: varsayılan değeridir"${debugInfo.remoteMachineName}"
. Hata ayıklamak için programı barındıran uzak sistemin adı. Yalnızca derleme sisteminden farklıysa gereklidir. Bağlantı Yöneticisi var olan bir girdi olmalıdır. Var olan tüm uzak bağlantıların listesini görüntülemek için Ctrl+Ara Çubuğu tuşlarına basın.cwd
: varsayılan değeridir"${debugInfo.defaultWorkingDirectory}"
. Uzak sistemde çalıştırıldığıprogram
dizinin Unix yolu. Dizinin var olması gerekir.gdbpath
: varsayılan değeridir/usr/bin/gdb
. Hata ayıklamak için kullanılan içingdb
tam Unix yolu. Yalnızca özel sürümügdb
kullanılıyorsa gereklidir.preDebugCommand
: çağırmadangdb
hemen önce çalıştırılacak bir Linux komutu.gdb
komutu tamamlanana kadar başlatılmaz. yürütmedengdb
önce bir betik çalıştırmak için seçeneğini kullanabilirsiniz.
Yapılandırmayla gdbserver
izin verilen ek seçenekler (16.7 veya üzeri)
program
: varsayılan değeridir"${debugInfo.fullTargetPath}"
. Hata ayıklamak için uygulamanın Unix yolu. Yalnızca derleme veya dağıtım konumundaki hedef yürütülebilir dosyadan farklıysa gereklidir.İpucu
Yerel çapraz derleme senaryoları için dağıtım henüz desteklenmiyor. Windows üzerinde çapraz derleme (örneğin, Linux ARM yürütülebilir dosyası oluşturmak için Windows'ta bir derleyiciler arası kullanma) hata ayıklamadan önce ikili dosyayı uzak ARM makinesinde tarafından
program
belirtilen konuma el ile kopyalamanız gerekir.remoteMachineName
: varsayılan değeridir"${debugInfo.remoteMachineName}"
. Hata ayıklamak için programı barındıran uzak sistemin adı. Yalnızca derleme sisteminden farklıysa gereklidir. Bağlantı Yöneticisi var olan bir girdi olmalıdır. Var olan tüm uzak bağlantıların listesini görüntülemek için Ctrl+Ara Çubuğu tuşlarına basın.cwd
: varsayılan değeridir"${debugInfo.defaultWorkingDirectory}"
. Uzak sistemdeki dizinin çalıştırıldığıprogram
tam Unix yolu. Dizinin var olması gerekir.gdbPath
: varsayılan değeridir${debugInfo.vsInstalledGdb}
. Hata ayıklamak için kullanılan öğesiningdb
tam Windows yolu.gdb
C/C++ iş yükü ile Linux geliştirmesiyle yüklenen varsayılan değerdir.gdbserverPath
: varsayılan değeridirusr/bin/gdbserver
. Hata ayıklamak için kullanılan içingdbserver
tam Unix yolu.preDebugCommand
: başlatmadangdbserver
hemen önce çalıştırılacak bir Linux komutu.gdbserver
komutu tamamlanana kadar başlatılmaz.
Dağıtım seçenekleri
Derleme makinenizi (CMakeSettings.json içinde tanımlanan) uzak hata ayıklama makinenizden ayırmak için aşağıdaki seçenekleri kullanın.
remoteMachineName
: Uzaktan hata ayıklama makinesi. Yalnızca derleme makinesinden farklıysa gereklidir. Bağlantı Yöneticisi var olan bir girdi olmalıdır. Var olan tüm uzak bağlantıların listesini görüntülemek için Ctrl+Ara Çubuğu tuşlarına basın.disableDeploy
: varsayılan değeridirfalse
. Derleme/hata ayıklama ayrımlarının devre dışı bırakılıp bırakılmadığını gösterir. olduğundafalse
, bu seçenek derleme ve hata ayıklamanın iki ayrı makinede gerçekleşmesini sağlar.deployDirectory
: Yürütülebilir dosyanın kopyaıldığı dizininremoteMachineName
tam Unix yolu.deploy
: Gelişmiş dağıtım ayarları dizisi. Bu ayarları yalnızca dağıtım işlemi üzerinde daha ayrıntılı denetim istiyorsanız yapılandırmanız gerekir. Varsayılan olarak, yalnızca işlemin hata ayıklaması için gerekli dosyalar uzak hata ayıklama makinesine dağıtılır.sourceMachine
: Dosya veya dizinin kopyalandığı makine. Bağlantı Yöneticisi depolanan tüm uzak bağlantıların listesini görüntülemek için Ctrl+Ara Çubuğu tuşlarına basın. WSL'de yerel olarak oluşturulurken bu seçenek yoksayılır.targetMachine
: Dosyanın veya dizinin kopyalandığı makine. Bağlantı Yöneticisi depolanan tüm uzak bağlantıların listesini görüntülemek için Ctrl+Ara Çubuğu tuşlarına basın.sourcePath
: üzerindeki dosya veya dizin konumusourceMachine
.targetPath
: üzerindeki dosya veya dizin konumutargetMachine
.deploymentType
: Dağıtım türünün açıklaması.LocalRemote
veRemoteRemote
desteklenir.LocalRemote
, yerel dosya sisteminden launch.vs.json'de tarafındanremoteMachineName
belirtilen uzak sisteme kopyalama anlamına gelir.RemoteRemote
, CMakeSettings.json'de belirtilen uzak derleme sisteminden launch.vs.json'de belirtilen farklı uzak sisteme kopyalama anlamına gelir.executable
: Dağıtılan dosyanın yürütülebilir dosya olup olmadığını gösterir.
Özel gdb
komutları yürütme
Visual Studio, temel alınan hata ayıklayıcıyla doğrudan etkileşime geçmek için özel gdb
komutların yürütülmesini destekler. Daha fazla bilgi için bkz . Özel gdb
lldb komutlarını yürütme.
Günlü kaydını etkinleştir
hangi komutların gönderildiğini, hangi çıkışın gdb
döndürdüğünü ve her komutun ne kadar sürdüğünü görmek için gdb
MIEngine günlüğünü etkinleştirin. Daha fazla bilgi edinin
Yapılandırma türü cppdbg
Yapılandırma türü kullanılarak cppdbg
uzak sistemde veya WSL'de hata ayıklama sırasında aşağıdaki seçenekler kullanılabilir. Visual Studio 2019 sürüm 16.6 veya sonraki sürümlerinde yapılandırma türü cppgdb
önerilir.
name
: Başlangıç Öğesi açılan listesinde yapılandırmayı tanımlamak için kolay bir ad.project
: Proje dosyasının göreli yolunu belirtir. Normalde, bir CMake projesinde hata ayıklarken bu değeri değiştirmeniz gerekmez.projectTarget
: Projeyi oluştururken çağrılacak CMake hedefini belirtir. Hata Ayıklama Menüsü veya Hedefler Görünümü'nden launch.vs.json girerseniz Visual Studio bu özelliği otomatik olarak doldurulur. Bu değer, Başlangıç Öğesi açılan listesinde listelenen mevcut bir hata ayıklama hedefinin adıyla eşleşmelidir.args
: Başlangıçta hata ayıklanan programa geçirilen komut satırı bağımsız değişkenleri.processID
: Eklenecek Linux işlem kimliği. Yalnızca uzak işleme iliştirirken kullanılır. Daha fazla bilgi için bkz . GDB kullanarak işlemlere ekleme sorunlarını giderme.program
: varsayılan değeridir"${debugInfo.fullTargetPath}"
. Hata ayıklamak için uygulamanın Unix yolu. Yalnızca derleme veya dağıtım konumundaki hedef yürütülebilir dosyadan farklıysa gereklidir.remoteMachineName
: varsayılan değeridir"${debugInfo.remoteMachineName}"
. Hata ayıklamak için programı barındıran uzak sistemin adı. Yalnızca derleme sisteminden farklıysa gereklidir. Bağlantı Yöneticisi var olan bir girdi olmalıdır. Var olan tüm uzak bağlantıların listesini görüntülemek için Ctrl+Ara Çubuğu tuşlarına basın.cwd
: varsayılan değeridir"${debugInfo.defaultWorkingDirectory}"
. Uzak sistemdeki dizinin çalıştırıldığıprogram
tam Unix yolu. Dizinin var olması gerekir.environment
: Hata ayıklanan programa geçirilen ek ortam değişkenleri. Örneğin,"environment": [ { "name": "ENV1", "value": "envvalue1" }, { "name": "ENV2", "value": "envvalue2" } ]
pipeArgs
: Bağlantıyı yapılandırmak için kanal programına geçirilen bir komut satırı bağımsız değişkenleri dizisi. Kanal programı, Visual Studio ilegdb
arasında standart giriş/çıkış geçişi yapmak için kullanılır. CMake projelerinin hatalarını ayıklarken bu dizinin çoğunun özelleştirilmesi gerekmez. Özel durum, uzak sistemde başlatılangdb
'dir${debuggerCommand}
. Şu şekilde değiştirilebilir:Linux sisteminizde DISPLAY ortam değişkeninin değerini dışarı aktarın. Aşağıdaki örnekte, bu değer şeklindedir
:1
."pipeArgs": [ "/s", "${debugInfo.remoteMachineId}", "/p", "${debugInfo.parentProcessId}", "/c", "export DISPLAY=:1;${debuggerCommand}", "--tty=${debugInfo.tty}" ],
yürütülmeden
gdb
önce bir betik çalıştırın. Betiğinizde yürütme izinlerinin ayarlandığından emin olun."pipeArgs": [ "/s", "${debugInfo.remoteMachineId}", "/p", "${debugInfo.parentProcessId}", "/c", "/path/to/script.sh;${debuggerCommand}", "--tty=${debugInfo.tty}" ],
stopOnEntry
: İşlem başlatılır başlatılmaz kesme yapılıp yapılmayacağını belirten boole değeri. Varsayılan değer false.visualizerFile
: Bu işlemde hata ayıklarken kullanılacak bir .natvis dosyası. Bu seçenek, güzel yazdırma ilegdb
uyumlu değildir. Bu özelliği ayarladığınızda da ayarlayınshowDisplayString
.showDisplayString
: Bir belirtildiğinde görüntü dizesini etkinleştiren boolevisualizerFile
değeri. Bu seçeneğin olaraktrue
ayarlanması hata ayıklama sırasında daha yavaş performansa neden olabilir.setupCommands
: Temel alınan hata ayıklayıcıyı ayarlamak için yürütülecek bir veya daha fazlagdb
komut.miDebuggerPath
: için tam yolgdb
. Belirtilmediğinde, Visual Studio önce PATH'de hata ayıklayıcıyı arar.Son olarak, yapılandırma türü için
cppgdb
tanımlanan tüm dağıtım seçenekleri de yapılandırma türü tarafındancppdbg
kullanılabilir.
Kullanarak hata ayıklama gdbserver
kullanarak gdbserver
hata ayıklamak için yapılandırmayı cppdbg
yapılandırabilirsiniz. Ile Linux CMake Projelerinde gdbserver
Hata Ayıklama makalesindeki Microsoft C++ Ekip Blogu'nda daha fazla ayrıntı ve örnek başlatma yapılandırması bulabilirsiniz.
Ayrıca bkz.
Visual Studio'da CMake projeleri
Linux CMake projesi yapılandırma
Uzak Linux bilgisayarınıza bağlanma
CMake derleme ayarlarını özelleştirme
CMake hata ayıklama oturumlarını yapılandırma
Linux projenizi dağıtma, çalıştırma ve projenizin hatalarını ayıklama
CMake önceden tanımlanmış yapılandırma başvurusu