none
'%'をファイルパスに含む作業ディレクトリでのデバッグ実行 RRS feed

  • 質問

  • 環境:
    Windows 7 Professional SP1
    Visual Studio Professional 2012 Version 11.0.61030.00 Update 4


    1. 経緯
    '%'をファイルパスに含むことで発生するバグがありました。
    これをデバッグするため、プロパティ→デバッグ→作業ディレクトリに'%'を含むパスを入力したところ、
    デバッグ実行しようとすると以下のようなエラーが発生しました。

    例:
    実際のディレクトリ: 'C:\temp\%28'
    作業ディレクトリ:   'C:\temp\%28'

    結果:
    プログラム 'XXX.exe' を開始できません。
    'C:\temp\(' は有効な作業ディレクトリではありません。


    2. 回避策
    作業ディレクトリの入力として、'%'を'%25'に置き換えることで回避できました。

    例:
    実際のディレクトリ: 'C:\temp\%28'
    作業ディレクトリ:   'C:\temp\%2528'


    3. 回避できない例
    ケースを絞り込めていませんが、以下のようなファイルパスの場合に回避できません。

    例:
    実際のディレクトリ: 'C:\temp\%2528漢%2529\%28漢%29\(漢)'
    作業ディレクトリ:   'C:\temp\%252528漢%252529\%2528漢%2529\(漢)'

    結果:
    プログラム 'XXX.exe' を開始できません。
    'C:\temp\%2528漢%2529\(漢)\(漢)' は有効な作業ディレクトリではありません。

    多様なケースでの検証ができない状態です。何か回避策はないでしょうか。
    よろしくお願いします。

    ※ 内容はC++ではありませんが、.Netではプロパティウィンドウが異なるため正常動作します。


    2015年4月24日 10:17

回答

  • 手元の VS2013 Update 4 でも確認しました。
    作業ディレクトリ指定のコンボボックスから参照を選んでも同様に実行できないので、不具合だと思います。
    Connect に登録していただく、お急ぎであればサポートに連絡していただくとよいかもしれません。

    回避的には、別途プロセスを起動しておいてアタッチする、プログラム冒頭に作業ディレクトリを変更するデバッグコードを入れるぐらいでしょうか…。
    (そういったディレクトリを避けるというのが一番の手だと思いますが、あえてこういったディレクトリを選んでいることからそういったこともできないのですよね…)

    2015年4月25日 7:30
    モデレータ

すべての返信

  • 手元の VS2013 Update 4 でも確認しました。
    作業ディレクトリ指定のコンボボックスから参照を選んでも同様に実行できないので、不具合だと思います。
    Connect に登録していただく、お急ぎであればサポートに連絡していただくとよいかもしれません。

    回避的には、別途プロセスを起動しておいてアタッチする、プログラム冒頭に作業ディレクトリを変更するデバッグコードを入れるぐらいでしょうか…。
    (そういったディレクトリを避けるというのが一番の手だと思いますが、あえてこういったディレクトリを選んでいることからそういったこともできないのですよね…)

    2015年4月25日 7:30
    モデレータ
  • 再現確認ありがとうございます。

    以下に登録しました。
    https://connect.microsoft.com/VisualStudio/feedback/details/1281176

    現状は仕方ないので Visual Studio 2005 で検証を行っています。


    2015年4月27日 0:28