svvitchでDebugビルドができるようになったー!
といっても、デバック用が無いライブラリをリリース用のに変えただけですが。
デバックって便利なんですよね、使いだすともうデバックモード無ではやってられないというか。javaの時はスタックトレースがあるからいいんですけどねぇ、なんかもう理不尽な落ちまくりのときには重宝します。
で、需要があるか微妙ですが、VisualStudioのデバックコンソールに出力するPoco::Logger用のPoco::Channelクラスです。Debugビルドの時だけLogger->setChannel()しています。Channelがチェーンできたらいいのにな、setChannel()じゃなくてaddChannel()とかねぇ。
まずヘッダファイル。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #pragma once #include <Poco/Channel.h> #include <Poco/Message.h> class DebugConsoleChannel: public Poco::Channel { private: public: DebugConsoleChannel(); void log(const Poco::Message& msg); protected: ~DebugConsoleChannel(); }; |
こっちが実装ですね。UTF-8のまま出したら化けてたので、UTF-16で出すようにします。Poco便利ですね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #ifdef _DEBUG #include "DebugConsoleChannel.h" #include <Poco/UnicodeConverter.h> DebugConsoleChannel::DebugConsoleChannel() { } DebugConsoleChannel::~DebugConsoleChannel() { } void DebugConsoleChannel::log(const Poco::Message& msg) { std::wstring ws; Poco::UnicodeConverter::toUTF16(msg.getText(), ws); ws.append(L"n"); ::OutputDebugStringW(ws.c_str()); } #endif |
コメント