Console.log()没有输出到C ++中的Awesomium的远程调试器

时间:2016-02-23 07:39:33

标签: javascript c++ google-chrome debugging awesomium

我正在使用Awesomium library作为我的C ++应用程序的UI(“普通”C ++,没有.NET,预编译的标题等)。

一切正常,我能够将事件从C ++应用程序发送到Awesomium中的JavaScript,反之亦然。由于webCore->Update(),用户界面会响应点击次数等。

问题是,有时会出现JavaScript错误。我想看到他们喜欢在例如Edge / Chrome / Firefox(您可以按F12查看控制台,调试器等)。

我知道可以使用适当的WebConfig对Awesomium使用远程调试器,所以我尝试过:

Awesomium::WebConfig webConfig;
webConfig.remote_debugging_host = Awesomium::WSLit("127.0.0.1");
webConfig.remote_debugging_port = 9222;
//create the WebCore singleton with configuration
webCore = Awesomium::WebCore::Initialize(webConfig);

//create a new WebView instance with a certain width and height
view = webCore->CreateWebView(width, height, 0, Awesomium::kWebViewType_Window);
view->set_parent_window(*windowHandle->getHWND());

view->set_view_listener(this);

//create a global js object named 'app'
Awesomium::JSValue result = view->CreateGlobalJavascriptObject(Awesomium::WSLit("app"));

//bind our method dispatcher to the WebView
view->set_js_method_handler(this);

if (result.IsObject()) {
    //bind our custom method to it
    Awesomium::JSObject& appObject = result.ToObject();
    appObject.SetCustomMethod(Awesomium::WSLit("sendEvent"), false);
}

现在在http://localhost:9222/#的Chrome中,我看到了我的会话: enter image description here

我能够例如使用调试器在我的C ++应用程序中选择UI元素。 但是我在Chrome的调试器控制台选项卡中看不到任何内容(我在加载到Awesomium的网站中使用console.log("Hello!")): enter image description here

P.S。调试器窗口不是100%高度(如屏幕上所示)。我能以某种方式解决它吗?

p.s.2。谷歌浏览器不是我的首选浏览器。我可以使用另一个来调试Awesomium UI吗?

1 个答案:

答案 0 :(得分:2)

在Awesomium(v1.7.5.1)的远程调试器中看不到JavaScript错误/调试消息。 我发现的唯一方法是通过听OnAddConsoleMessage()类中的WebViewListener::Load方法。 您必须创建自己的子类并将其注册到您的webview。

    #include <Awesomium/WebViewListener.h>
    class MyViewListender : public WebViewListener::View {

            // ... All the overridden WebViewListener::View methods go here

            void OnAddConsoleMessage(Awesomium::WebView* caller,
                                     const Awesomium::WebString& message,
                                     int line_number,
                                     const Awesomium::WebString& source) 
            {
                    cout << "Console: " << message << endl;
            }
    };

注册:

    MyViewListender* my_view_listener = new MyViewListender();
    view->set_view_listener(my_view_listener);