質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

0回答

1068閲覧

ウォッチで変数の中身が見れません(Linux MSBuild C++ プロジェクトで、プロセスアタッチした場合だけ)

mossandesu

総合スコア0

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2021/03/19 03:07

現在、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
※不足している情報があればコメントお願いいたします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問