ページ 1 / 1
OutputDebugStringが動かない
Posted: 2013年5月30日(木) 17:33
by nullptr
失礼します、お久しぶりです。
諸事情でしばらくコーディングできなかったのですが、久しぶりにVisual Studio2012でデバッグをしていたところ、OutputDebugStringが動作していないようなのです・・・。
いや、関数は成功してるのかもわかりませんが、出力に表示されません・・・。VCは最新の状態のはずです、どうしてでしょうか。コンテキストメニューのプログラム出力にもちゃんとチェックしてあります。
再起動やらしましたがダメです。
試しにOutputDebugStringするだけのコードも書きましたが動きません。なにか設定しないと動かない関数だったでしょうか。どうしたら動くか、誰か何かご存知でしたらお教えください・・・。
コード:
#include <windows.h>
int WINAPI WinMain(
HINSTANCE hInstance ,
HINSTANCE hPrevInstance ,
LPSTR lpCmdLine ,
int nCmdShow )
{
OutputDebugStringW(L"いい加減出力しろ\n");
return 0;
}
Re: OutputDebugStringが動かない
Posted: 2013年5月30日(木) 18:26
by softya(ソフト屋)
DbgMon (開発者向け、デバッグ支援ツール)と言うのがあるのでお試しください。
「TechnoCity : ソフトウェア開発を行っている個人事業主」
http://www.technocity.jp/
これで表示されたら、Visual Studio2012のIDEの不調か何処か設定が変わった。
これで表示されなかったら、OutputDebugStringWが変?OutputDebugStringAで英字でも試してみてください。
Re: OutputDebugStringが動かない
Posted: 2013年5月30日(木) 21:35
by nullptr
ソフト屋様ありがとうございます。
::OutputDebugString(L"aaaaaaaaaaaaaaaaaaaaaaa\n");
::OutputDebugStringA("aaaaaaaaaaaaaaaaaaaaaaa\n");
も含めた上で試しましたが表示されません・・・
Re: OutputDebugStringが動かない
Posted: 2013年5月30日(木) 21:37
by softya(ソフト屋)
新月獅子 さんが書きました:ソフト屋様ありがとうございます。
::OutputDebugString(L"aaaaaaaaaaaaaaaaaaaaaaa\n");
::OutputDebugStringA("aaaaaaaaaaaaaaaaaaaaaaa\n");
も含めた上で試しましたが表示されません・・・
それは、DbgMon でも表示されないんでしょうか?
だとしたら2012の問題の可能性がありますね。
Re: OutputDebugStringが動かない
Posted: 2013年5月30日(木) 22:28
by nullptr
えーーっと・・・、
VS2012でコンパイルしたexeファイル、2つプロジェクトでテストしました ひとつは(1)OutputDebugStringするだけの前述のexe、もうひとつは(2)メールヘッダを解析するもので特筆するのはICUを使っている事くらいでしょうか。
DbgMon VS2012
A (1)をエクスプローラから実行 ○ ×
B (1)をVSのデバッグで起動 × ×
C (2)をエクスプローラから実行 × ×
D (2)をVSのデバッグで起動 × ×
でした・・・わけわかりませんねすいません 私はわけがわからないです
なぜAは良くてCはダメなのかとかも気になりますが、Aが動いているのでやはりVSに問題があるきがするのですが、さっぱりわけがわかりません
Re: OutputDebugStringが動かない
Posted: 2013年5月30日(木) 22:34
by softya(ソフト屋)
こうなるとプロセス間でやり取りされるイベントレベルで調べないと行けないかもしれません。
ただ、そこまでして2012なのか?と言う問題が出てきますが。
「OutputDebugString()の出力をもらう 屋根裏部屋別館blog/ウェブリブログ」
http://messiah-annex.at.webry.info/2005 ... cle_2.html
なんらかのセキュリティレベルの問題でもあるのかなと言う気がしないでもないです。
Re: OutputDebugStringが動かない
Posted: 2013年5月30日(木) 22:43
by nullptr
むむむ・・・。それは無駄に骨が折れますね・・・。
Windows依存な上に本格的なダンプに難がありますから、そこまでする気はないのですが。
しかし、2週間ほど前までちゃんと動いたものが動かないのは如何なものか・・・。ちょっとしたダンプには、使い勝手が良いのですが。
なんらかのセキュリティレベルの問題でもあるのかなと言う気がしないでもないです。
セキュリティとは・・・?
Re: OutputDebugStringが動かない
Posted: 2013年5月30日(木) 22:47
by softya(ソフト屋)
> セキュリティとは・・・?
管理者権限とか、そう言う話です。
> しかし、2週間ほど前までちゃんと動いたものが動かないのは如何なものか・・・。ちょっとしたダンプには、使い勝手が良いのですが。
こういうのはWindowsUpdateとかウィルス対策ソフトが怪しいです。
とりあえず2012を修復インストールしてみるのも手です。
Re: OutputDebugStringが動かない
Posted: 2013年5月30日(木) 22:52
by nullptr
UACとかメモリアクセスそういう話ですか、とりあえず管理者権限でVSを起動してみましたがそういうことじゃ解決しないですね
わかりました。修復してみます。
Re: OutputDebugStringが動かない
Posted: 2013年5月30日(木) 23:00
by トントン
実は見てる窓が違うとか。。。
Re: OutputDebugStringが動かない
Posted: 2013年5月31日(金) 00:22
by nullptr
修復インストールしましたがダメです・・・。この症状はやはり私にしか起きていないのでしょうか。
出力ウィンドウは間違えてないと思います・・・。
Re: OutputDebugStringが動かない
Posted: 2013年5月31日(金) 00:25
by softya(ソフト屋)
新月獅子 さんが書きました:修復インストールしましたがダメです・・・。この症状はやはり私にしか起きていないのでしょうか。
出力ウィンドウは間違えてないと思います・・・。
今回の場合の検証の問題点。
私はVS2012を起動することすら出来ない。 → 途中で異常終了する → 面倒で調べていない。
なので、申し訳ないですが私は検証出来ません。
Re: OutputDebugStringが動かない
Posted: 2013年5月31日(金) 00:37
by softya(ソフト屋)
ここの質問は参考になりませんか?
「OutputDebugString() does not work on Windows 7x64 - Stack Overflow」
http://stackoverflow.com/questions/8234 ... ndows-7x64
Re: OutputDebugStringが動かない
Posted: 2013年5月31日(金) 17:44
by ISLe
Windows 7 64bit と Visual Studio Express 2012 for Windows Desktop で最初のコードをデバッグ実行して出力されるのを確認しました。
SysinternalsのDebugViewにも出力されるのを確認しました。
ちなみにオプションでイミディエイトウィンドウに出力先を変更することも可能なので出力ウィンドウに表示されるとは限らないです。
デフォルトは出力ウィンドウですが。
修復インストールしても設定をリセットしなければオプションは引き継がれるはず。
Re: OutputDebugStringが動かない
Posted: 2013年5月31日(金) 18:56
by nullptr
ISLe さんが書きました:
ちなみにオプションでイミディエイトウィンドウに出力先を変更することも可能なので出力ウィンドウに表示されるとは限らないです。
デフォルトは出力ウィンドウですが。
修復インストールしても設定をリセットしなければオプションは引き継がれるはず。
イミディエイトウィンドウに出てました・・・!そういえば、少しオプションを設定したような・・・。
トントンさんの指摘のとおりでしたね。如何せん突然の数日間の作業できない環境だったので、完全に忘れていたようです。
ただ、オプションの解説もわかりにくいですね・・・。
[オプションと設定]>[デバッグ]>[全般]>[出力ウィンドウのすべての文字をイミディエイトウィンドウにリダイレクトする]
のチェックが入っていると、OutputDebugString「のみ」出力されるようです。というか、プログラム出力のみの出力ですね・・・。すべての文字を、と書いてはシンボルロードのメッセージもリダイレクトすると思うと思うんですが。
とはいえ解決しました。ソフト屋様、トントン様、ISLe様。些細な事にわざわざすいません。ご協力本当にありがとうございました。