Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Debugger Visualizer(.natvis) を導入する #995

Merged

Conversation

berryzplus
Copy link
Contributor

PR の目的

Debugger Visualizer(.natvis) を導入することにより、
デバッグ用のモニター変数を用意しなくても、任意型のデータを参照できるようにします。

.natvis活用の具体例として、CNativeWのデバッグ専用メンバm_pDebugDataを置き換えます。

  • CNativeW は UNICODE 文字列を保持する文字列バッファクラス
  • CNativeW のバッファは、基本クラスCMemoryのバッファ(char*型)を流用している
    • char型バッファをwchar_t型バッファに見せるための機構が存在していた
      • .natvisを使うと、char型バッファをwchar_t型バッファとして表示できる
        • このPRは .natvisでchar型バッファをwchar_t型バッファとして表示させる設定例を提供する
      • バッファ型読み替えのための機構は、.natvis導入によって不要になる
        • このPRは不要となるCNativeW::m_pDebugDataとCMemory::_DebugGetPointerRef()を削除する
          • CNativeWは多量に確保されるクラスなので、ポインタ変数を削ると使用メモリ削減の効果があります。

カテゴリ

  • リファクタリング
  • その他

PR の背景

元ネタは #988 CDocLine の容量削減 です。

容量削減のためデバッグ用モニター変数が純粋削除されようとしていたので、代替を提供するべく.natvisの話が出てきました 😄

PR のメリット

プログラム的なデータ構造と、デバッグ表示を別物として扱うことができるようになります。
(モニター変数を用意しなくても、任意型のデータを参照できるようになります。)

既存のモニター変数を躊躇なく削ることができます 😄

PR のデメリット (トレードオフとかあれば)

実質的なデメリットはないと思います。

.natvis非対応のビルド環境(MinGW-w64-gccなど)にとっては、単にDebug用参照変数を削る変更になります。
元来、本流でないビルド環境を使って開発を行うには、それなりの技術が必要なので「影響なし」と考えてよいと思います。

PR の影響範囲

アプリ(=サクラエディタ)のデバッグに影響します。
アプリの機能には影響しません。

関連チケット

#988
#782

参考資料

https://blogs.msdn.microsoft.com/vcblog/2015/09/28/debug-visualizers-in-visual-c-2015/
https://devblogs.microsoft.com/cppblog/project-support-for-natvis/

.natvisを導入することにより、CNativeWのデバッグ専用メンバm_pDebugDataと関連処理を削る
@AppVeyorBot
Copy link

Copy link
Contributor

@beru beru left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

問題無いと思います。

自分の環境では下記のように表示されました。

ss

@berryzplus berryzplus merged commit 8c83630 into sakura-editor:master Aug 16, 2019
@berryzplus berryzplus deleted the feature/use_debbuger_visualizer branch August 16, 2019 09:44
@berryzplus
Copy link
Contributor Author

レビューありがとうございます。

@beru beru added the no-changelog 【ChangeLog除外】 label Aug 23, 2019
@m-tmatma m-tmatma added this to the v2.4.0 milestone Dec 29, 2019
HoppingTappy pushed a commit to HoppingTappy/sakura that referenced this pull request Jun 16, 2020
…uger_visualizer

Debugger Visualizer(.natvis) を導入する
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
no-changelog 【ChangeLog除外】
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants