現在、Visual Studio2019 community(以下VS)にて、MsBuildのLinuxプロジェクトの開発をしています。
下記[main.cpp]の「return 0」の行にブレークポイントを置き、
VSメニューの[デバッグ]>[デバッグの開始]から実行した場合(…以降操作②と記述)は、unordered_mapのキーや値、stringの中身を、ウォッチで参照する事ができるのですが、
リモート接続側のLinux上で実行し、冒頭15秒のループ中に、VS側でプロセスアタッチ([デバッグ]>[プロセスにアタッチ])をしますと(以降操作②と記述)、
操作①の様な、unordered_mapのキーや値、stringの中身を、ウォッチを使って参照ができませんでした。
<main.cpp>
cpp
1#include <string> 2#include <unordered_map> 3#include <unistd.h> // sleep 4using namespace std; 5 6//int main(){ 7int main(int argc, char *argv[]){ 8 9 // wait 10 int myLpcMax = 15; 11 for (int myLpc = 0; myLpc < myLpcMax; myLpc++) { 12 sleep(1); 13 printf("sleep:%d\n", myLpc); 14 } 15 16 unordered_map<string, string> myMap; 17 string myTestStr = "aaa=111&bbb=222&ccc=333"; 18 myMap["testKey"] = "testStr"; 19 return 0; 20}
(後者を選ぶと、ブレークポイントで止まらず、何もウォッチに表示されませんでした)
<後者を選んだ時>
試したこと
MSサイトの記事に、[Create custom views of C++ objects in the debugger using the Natvis framework]((https://docs.microsoft.com/ja-jp/visualstudio/debugger/create-custom-views-of-native-objects?view=vs-2019)という説明ページがあり、
[.vcxproj]に追記する事で、構造体などの情報を、自分好みに整形ができる様なのですが、操作①の場合は整形が反映されますが、操作②は整形が反映されませんでした。
(ウォッチの表示問題とは関係ない制御の様な気がしますが、試した事として記載しています)
xml
1[NatvisFile.natvis] 2<?xml version="1.0" encoding="utf-8"?> 3<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> 4 <Type Name="StructEmp"> 5 <DisplayString>年齢 = {age} 性別 = {sex} 姓 = {first_name} 名 = {last_name}</DisplayString> 6 </Type> 7</AutoVisualizer>
また、VSのプロジェクトプロパティの[構成プロパティ]>[デバッグ]>[Python再フォーマットを有効にする]の値を、
「いいえ」に変更した時、操作①の表示内容が、操作②と同じ様になる事を確認しています。
Linux側の環境設定で、「Python再フォーマットを有効にする」と同等な設定が不足しているのではと思っていますが、それらしい記事を、ネットで見つける事ができずに悩んでいます。
何が不足しているのでしょうか。
###環境
<開発PC>
・Windows10 Pro 20H2 19042.868
・Visual Studio 2019 community 16.9.2
<リモートLinux>
・CentOS Linux release 7.5.1804 (Core)
・GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7
・db-gdbserver.x86_64 7.6.1-120.el7
※不足している情報があればコメントお願いいたします
あなたの回答
tips
プレビュー