デバッグ中に開いたファイルは閉じてほしい – プログラミング – Home

デバッグ中に開いたファイルは閉じてほし...
 
通知
すべてクリア

デバッグ中に開いたファイルは閉じてほしい


Air
 Air
(@Air)
ゲスト
結合: 20年前
投稿: 33
Topic starter  

久しぶりに書き込みさせていただきます、Air です。

最近 Vc++6.0 から .NET に移行し作業を行っております。
そこで質問なのですが、
デバッグでブレークポイントを張り、ステップ実行を行う際
飛び先の関数が別ファイルに移ったらそのファイルが開かれます。
まあそれは当然なのですが、個人的には、デバッグを中止し
プログラム作業に戻ったときに、そのデバッグ中に開かれたファイルは
閉じてくれないものかと思います。
例えば、標準の new をうっかり追いかけてしまうと、new.cpp が開かれて
ずっと開きっぱなしになります。・・・よね?
そういうのが残っていると、邪魔だなぁと思うわけです。

もしこの辺りが設定により変更できるのであれば
そのやり方を教えていただけませんでしょうか?
そんな設定ね~よ と言われればおとなしくあきらめますが…

よろしくお願いします。


引用解決済
トピックタグ
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

未だにVC6がメインでたまに.NETを使っていますが、
そういう設定があるのではないかと言う発想がそもそもなかったり。(^^;
基本的に自分で閉じてますし、それが普通だと思ってました。
IDEの環境設定にそういう内容を見つけた事がないので、無いのではないかと思うのですが、
あるなら私も知りたいです。


返信引用
Kerry
 Kerry
(@Kerry)
ゲスト
結合: 20年前
投稿: 192
 

VS.NETであれば、マクロを組めば可能ですね。
即興で作ってみましたので、よろしければご利用ください。

適当に新規マクロプロジェクトを開いて、EnvironmentEventsモジュールに
以下のようにコードを追加します。

--------------------------------------------------------------------------
Option Strict Off
Option Explicit Off
Imports EnvDTE
Imports System.Diagnostics

Public Module EnvironmentEvents

#Region Automatically generated code, do not modify
'Automatically generated code, do not modify
'Event Sources Begin
<System.ContextStaticAttribute()> Public WithEvents DTEEvents As
EnvDTE.DTEEvents
<System.ContextStaticAttribute()> Public WithEvents DocumentEvents As
EnvDTE.DocumentEvents
<System.ContextStaticAttribute()> Public WithEvents WindowEvents As
EnvDTE.WindowEvents
<System.ContextStaticAttribute()> Public WithEvents TaskListEvents As
EnvDTE.TaskListEvents
<System.ContextStaticAttribute()> Public WithEvents FindEvents As
EnvDTE.FindEvents
<System.ContextStaticAttribute()> Public WithEvents OutputWindowEvents As
EnvDTE.OutputWindowEvents
<System.ContextStaticAttribute()> Public WithEvents SelectionEvents As
EnvDTE.SelectionEvents
<System.ContextStaticAttribute()> Public WithEvents BuildEvents As
EnvDTE.BuildEvents
<System.ContextStaticAttribute()> Public WithEvents SolutionEvents As
EnvDTE.SolutionEvents
<System.ContextStaticAttribute()> Public WithEvents SolutionItemsEvents As
EnvDTE.ProjectItemsEvents
<System.ContextStaticAttribute()> Public WithEvents MiscFilesEvents As
EnvDTE.ProjectItemsEvents
<System.ContextStaticAttribute()> Public WithEvents DebuggerEvents As
EnvDTE.DebuggerEvents
'Event Sources End
'End of automatically generated code
#End Region

' ↓ここから追加 ======================================

Private docs As New Collection()

Public Sub DocumentEvents_DocumentOpened(ByVal Document As
EnvDTE.Document) Handles DocumentEvents.DocumentOpened
If DTE.Debugger Is Nothing Then Exit Sub
If DTE.Debugger.CurrentMode <> dbgDebugMode.dbgDesignMode Then
' デバッグ中にオープンしたドキュメントを保持する
On Error Resume Next
docs.Add(Document, Document.FullName)
End If
End Sub

Public Sub DocumentEvents_DocumentClosing(ByVal Document As
EnvDTE.Document) Handles DocumentEvents.DocumentClosing
' クローズされたドキュメントを除去する
On Error Resume Next
docs.Remove(Document.FullName)
End Sub

Public Sub DebuggerEvents_OnEnterDesignMode(ByVal Reason As
EnvDTE.dbgEventReason) Handles DebuggerEvents.OnEnterDesignMode
' デザインモードに戻ってきたときに、デバッグ中にオープンされたドキュメ
ントをクローズする
Do While docs.Count > 0
docs(1).Close()
Loop
End Sub

' ↑ ここまで追加 =====================================

End Module

--------------------------------------------------------------------------

デバッグ中にオープンされたドキュメントを保持し、デバッグ終了時に
保持しているドキュメントをすべてクローズします。
デバッグ開始以前にオープンされたドキュメントは閉じません。

VS.NET 2002(C#) の環境で作りましたが、2003でも使用できると思います。
なお、使用にあたっては、自己責任でお願いします。


返信引用
Kerry
 Kerry
(@Kerry)
ゲスト
結合: 20年前
投稿: 192
 

↑すみません。変に改行が入ってしまっているところが
ありますので、直してご利用ください。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

なるほど、マクロを使うと言う手がありましたか。
きちんと使いこなせば、マクロで大概の事は出来そうですね。
一時期、手を染めかけて止めたままほったらかしにしてたなぁ。(^^;


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました