如何调试Dart AppEngine应用程序

时间:2014-11-07 18:35:13

标签: google-app-engine dart

我现在可以使用

运行Dart应用
gcloud --verbosity debug preview app run app.yaml

并在AppEngine上部署和运行

gcloud --verbosity debug preview app deploy app.yaml

但是我没有找到将调试器连接到开发服务器上运行的Dart应用程序的方法。

我找到了http://dartbug.com/21067,但仍无法找到使其正常工作的方法。

另见https://groups.google.com/a/dartlang.org/forum/#!topic/cloud/OK1nJtg7AjQ

1 个答案:

答案 0 :(得分:1)

更新2015-02-27

应用程序可以在没有Docker的情况下运行,然后像任何Dart命令行应用程序一样进行调试: 资源。 https://groups.google.com/a/dartlang.org/d/msg/cloud/zrxgOHFz_lA/q5CdLLQPBAgJ

  

API服务器是App Engine SDK的一部分,我们正在使用它   在appengine包中运行测试。如果你看看   https://github.com/dart-lang/appengine/blob/master/tool/run_tests.sh   你会看到它期望环境变量   APPENGINE_API_SERVER。

     

API服务器位于/platform/google_appengine/api_server.py

     

并采取了许多论点。我刚试过像这样运行它:

     

$ $ CLOUD_SDK / platform / google_appengine / api_server.py \ -A   dev~test-application \ --api_port 4444 \ --high_replication \
  --datastore_path / tmp / datastore

     

在正常开发服务器之外运行应用程序引擎应用程序   要求设置许多环境变量。这很有效   对于我的申请:

     

$ GAE_LONG_APP_ID = test-application \ GAE_MODULE_NAME =默认\\   GAE_MODULE_VERSION =版本\ GAE_PARTITION = dev \ API_PORT = 4444 \
  API_HOST = 127.0.0.1 \ dart bin / server.dart

     

在Dart编辑器中,您无法为每个设置环境变量   启动配置,因此必须在启动前全局设置   飞镖编辑。在WebStorm中,可以运行配置   特定的环境变量。

     

这种简单的设置会导致不支持正常的一切   开发服务器支持。一些问题是:

     
      
  • 当时只有一个应用程序,因为它始终在端口上侦听   8080(可以很容易地进行配置)*用户API(嘲笑这个   应该不那么困难)*模块API *没有健康检查   (应该不是问题)*所有HTTP标头都是直接的   客户端(没有x-appengine-headers)*管理员web界面不是   可用*可能还有其他东西
  •   
     

这都是实验性的,但它是一个更简单的解决方案   开发人员设置,原因与部署不匹配   环境与开发服务器一样紧密。

     

使用Docker运行API服务器也可以作为图像   带有Cloud SDK的google / cloud-sdk位于hub.docker.com。

     

使用以下Dockerfile

     

FROM google / cloud-sdk EXPOSE 4444 ENTRYPOINT   [“/google-cloud-sdk/platform/google_appengine/api_server.py”,\\   “-A”,“dev~test-application”,“ - api_port”,“4444”,\   “--high_replication”,“ - datastore_path”,“/ tmp / datastore”]

     

构建并运行

     

$ docker build -t api_server。 $ docker run -d -p 4444:4444 api_server

     

将上面的API_HOST更改为192.166.59.103(无论你的Docker在哪里)   容器是)并运行。

     

此致,SørenGjesse

更新2014-11-27

从DartEditors调试器调试开始使用流畅的Dart构建1.8.0.edge_042017。 我假设下一个dev版本(可能是1.9.0-dev1.0)也会包含相关的修复程序?

有关其工作原理的详细步骤,请访问:https://groups.google.com/a/dartlang.org/d/msg/cloud/OK1nJtg7AjQ/u-GzUDI-0VIJ

env_variables:
  DBG_ENABLE: 'true'

# disable health-checking because this is so annoying during debugging
vm_health_check:
  enable_health_check: False

有关自定义运行状况检查的详细信息,请参阅How to disable health checking for `gcloud preview app run`

  • 使用glcoud --verbosity debug app run app.yamlglcoud --verbosity debug app run app.yaml index.yaml

  • 启动应用的服务器代码
  • 等到Docker容器准备就绪(如果docker ps列显示以Command开头的值

  • ,请与/dart_runtime/dart_联系
  • 打开DartEditor

  • 打开菜单Run > Remote Connection...

    • 连接到:Command-line VM

    • 主持人:localhost如果你没有t use boot2docker or the IP address returned by the command boot2docker ip`

    • 端口:5005

    • Select Folder...选择包含项目源代码的目录。

    • 点击OK

    • 设置断点并照常继续。

第一步是使用Observatory,其中包括基于浏览器的调试器UI。

要完成此工作,请将以下行添加到app.yaml文件

network:
  forwarded_ports: ["8181"]

这可能有助于让server.dart等到我们有机会使用天文台设置断点。

env_variables:
  DART_VM_OPTIONS: '--pause-isolates-on-start'

boot2docker为我们提供了Docker ip(192.168.59.103),从gcloud preview app run app.yaml开始后,我们可以连接到http://192.168.59.103:8181,这将打开Observatory GUI。