zoukankan      html  css  js  c++  java
  • Otter远程调试

    Otter远程调试

    环境配置:

    机器 172.16.0.2 172.16.0.3 172.16.0.4
    ZK FOLLOWER FOLLOWER LEADER
    MySQL Manager MySQL 主1 主2
    Otter Manager Node Node

    具体如何搭建虚拟机环境,ZK集群以及启动Docker版的Mysql,请参考我的其他文章:

    VMWare Linux 网络配置

    Zookeeper集群搭建

    Centos7环境初始化

    首先把代码下载到本地,并用IDEA打开,然后把版本切换到4.2.15,然后安装maven中心没有的jar包,最后编译4.2.15版本的的otter。具体如何进行编译操作请参考我的另一篇文章:

    Otter编译

    Otter简单部署

    把编译出来的manager和node分别上传到对应的服务器,并解压到/opt/manager或者/opt/node,然后修改配置文件:

    Manager(172.16.0.2):

    ## otter manager domain name
    otter.domainName = 172.16.0.2
    ## otter manager http port
    otter.port = 8080
    ## jetty web config xml
    otter.jetty = jetty.xml
    
    ## otter manager database config
    otter.database.driver.class.name = com.mysql.jdbc.Driver
    otter.database.driver.url = jdbc:mysql://172.16.0.2:3306/otter
    otter.database.driver.username = root
    otter.database.driver.password = 123456
    
    ## otter communication port
    otter.communication.manager.port = 1099
    
    ## otter communication pool size
    otter.communication.pool.size = 10
    
    ## default zookeeper address
    #otter.zookeeper.cluster.default = 172.16.0.2:2181 #取消Manager高可用
    ## default zookeeper sesstion timeout = 60s
    otter.zookeeper.sessionTimeout = 60000
    
    ## otter arbitrate connect manager config
    otter.manager.address = ${otter.domainName}:${otter.communication.manager.port}
    
    ## should run in product mode , true/false
    otter.manager.productionMode = true
    
    ## self-monitor enable or disable
    otter.manager.monitor.self.enable = true
    ## self-montir interval , default 120s
    otter.manager.monitor.self.interval = 120
    ## auto-recovery paused enable or disable
    otter.manager.monitor.recovery.paused = true
    # manager email user config
    otter.manager.monitor.email.host = smtp.gmail.com
    otter.manager.monitor.email.username =
    otter.manager.monitor.email.password =
    otter.manager.monitor.email.stmp.port = 465
    

    Node(172.16.0.3):

    # otter node root dir
    otter.nodeHome = /opt/node/
    
    ## otter node dir
    otter.htdocs.dir = ${otter.nodeHome}/htdocs
    otter.download.dir = ${otter.nodeHome}/download
    otter.extend.dir= ${otter.nodeHome}/extend
    
    ## default zookeeper sesstion timeout = 60s
    otter.zookeeper.sessionTimeout = 60000
    
    ## otter communication pool size
    otter.communication.pool.size = 10
    
    ## otter arbitrate & node connect manager config
    otter.manager.address = 172.16.0.2:1099                                     
    

    Node(172.16.0.4):

    # otter node root dir
    otter.nodeHome = /opt/node/
    
    ## otter node dir
    otter.htdocs.dir = ${otter.nodeHome}/htdocs
    otter.download.dir = ${otter.nodeHome}/download
    otter.extend.dir= ${otter.nodeHome}/extend
    
    ## default zookeeper sesstion timeout = 60s
    otter.zookeeper.sessionTimeout = 60000
    
    ## otter communication pool size
    otter.communication.pool.size = 10
    
    ## otter arbitrate & node connect manager config
    otter.manager.address = 172.16.0.2:1099
    

    启动Manager并做相应操作
    在Manager MySQL 执行 以下SQL:

    CREATE DATABASE /*!32312 IF NOT EXISTS*/ `otter` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;
    
    USE `otter`;
    
    CREATE TABLE `ALARM_RULE` (
      `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
      `MONITOR_NAME` varchar(1024) DEFAULT NULL,
      `RECEIVER_KEY` varchar(1024) DEFAULT NULL,
      `STATUS` varchar(32) DEFAULT NULL,
      `PIPELINE_ID` bigint(20) NOT NULL,
      `DESCRIPTION` varchar(256) DEFAULT NULL,
      `GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      `MATCH_VALUE` varchar(1024) DEFAULT NULL,
      `PARAMETERS` text DEFAULT NULL,
      PRIMARY KEY (`ID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `AUTOKEEPER_CLUSTER` (
      `ID` bigint(20) NOT NULL AUTO_INCREMENT,
      `CLUSTER_NAME` varchar(200) NOT NULL,
      `SERVER_LIST` varchar(1024) NOT NULL,
      `DESCRIPTION` varchar(200) DEFAULT NULL,
      `GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`ID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `CANAL` (
      `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
      `NAME` varchar(200) DEFAULT NULL,
      `DESCRIPTION` varchar(200) DEFAULT NULL,
      `PARAMETERS` text DEFAULT NULL,
      `GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`ID`),
      UNIQUE KEY `CANALUNIQUE` (`NAME`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `CHANNEL` (
      `ID` bigint(20) NOT NULL AUTO_INCREMENT,
      `NAME` varchar(200) NOT NULL,
      `DESCRIPTION` varchar(200) DEFAULT NULL,
      `PARAMETERS` text DEFAULT NULL,
      `GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`ID`),
      UNIQUE KEY `CHANNELUNIQUE` (`NAME`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `COLUMN_PAIR` (
      `ID` bigint(20) NOT NULL AUTO_INCREMENT,
      `SOURCE_COLUMN` varchar(200) DEFAULT NULL,
      `TARGET_COLUMN` varchar(200) DEFAULT NULL,
      `DATA_MEDIA_PAIR_ID` bigint(20) NOT NULL,
      `GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`ID`),
      KEY `idx_DATA_MEDIA_PAIR_ID` (`DATA_MEDIA_PAIR_ID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `COLUMN_PAIR_GROUP` (
      `ID` bigint(20) NOT NULL AUTO_INCREMENT,
      `DATA_MEDIA_PAIR_ID` bigint(20) NOT NULL,
      `COLUMN_PAIR_CONTENT` text DEFAULT NULL,
      `GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`ID`),
      KEY `idx_DATA_MEDIA_PAIR_ID` (`DATA_MEDIA_PAIR_ID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `DATA_MEDIA` (
      `ID` bigint(20) NOT NULL AUTO_INCREMENT,
      `NAME` varchar(200) NOT NULL,
      `NAMESPACE` varchar(200) NOT NULL,
      `PROPERTIES` varchar(1000) NOT NULL,
      `DATA_MEDIA_SOURCE_ID` bigint(20) NOT NULL,
      `GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`ID`),
      UNIQUE KEY `DATAMEDIAUNIQUE` (`NAME`,`NAMESPACE`,`DATA_MEDIA_SOURCE_ID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `DATA_MEDIA_PAIR` (
      `ID` bigint(20) NOT NULL AUTO_INCREMENT,
      `PULLWEIGHT` bigint(20) DEFAULT NULL,
      `PUSHWEIGHT` bigint(20) DEFAULT NULL,
      `RESOLVER` text DEFAULT NULL,
      `FILTER` text DEFAULT NULL,
      `SOURCE_DATA_MEDIA_ID` bigint(20) DEFAULT NULL,
      `TARGET_DATA_MEDIA_ID` bigint(20) DEFAULT NULL,
      `PIPELINE_ID` bigint(20) NOT NULL,
      `COLUMN_PAIR_MODE` varchar(20) DEFAULT NULL,
      `GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`ID`),
      KEY `idx_PipelineID` (`PIPELINE_ID`,`ID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `DATA_MEDIA_SOURCE` (
      `ID` bigint(20) NOT NULL AUTO_INCREMENT,
      `NAME` varchar(200) NOT NULL,
      `TYPE` varchar(20) NOT NULL,
      `PROPERTIES` varchar(1000) NOT NULL,
      `GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`ID`),
      UNIQUE KEY `DATAMEDIASOURCEUNIQUE` (`NAME`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `DELAY_STAT` (
      `ID` bigint(20) NOT NULL AUTO_INCREMENT,
      `DELAY_TIME` int(21) NOT NULL,
      `DELAY_NUMBER` bigint(20) NOT NULL,
      `PIPELINE_ID` bigint(20) NOT NULL,
      `GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`ID`),
      KEY `idx_PipelineID_GmtModified_ID` (`PIPELINE_ID`,`GMT_MODIFIED`,`ID`),
      KEY `idx_Pipeline_GmtCreate` (`PIPELINE_ID`,`GMT_CREATE`),
      KEY `idx_GmtCreate_id` (`GMT_CREATE`,`ID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `LOG_RECORD` (
      `ID` bigint(20) NOT NULL AUTO_INCREMENT,
      `NID` varchar(200) DEFAULT NULL,
      `CHANNEL_ID` varchar(200) NOT NULL,
      `PIPELINE_ID` varchar(200) NOT NULL,
      `TITLE` varchar(1000) DEFAULT NULL,
      `MESSAGE` text DEFAULT NULL,
      `GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`ID`),
      KEY `logRecord_pipelineId` (`PIPELINE_ID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `NODE` (
      `ID` bigint(20) NOT NULL AUTO_INCREMENT,
      `NAME` varchar(200) NOT NULL,
      `IP` varchar(200) NOT NULL,
      `PORT` bigint(20) NOT NULL,
      `DESCRIPTION` varchar(200) DEFAULT NULL,
      `PARAMETERS` text DEFAULT NULL,
      `GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`ID`),
      UNIQUE KEY `NODEUNIQUE` (`NAME`,`IP`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `PIPELINE` (
      `ID` bigint(20) NOT NULL AUTO_INCREMENT,
      `NAME` varchar(200) NOT NULL,
      `DESCRIPTION` varchar(200) DEFAULT NULL,
      `PARAMETERS` text DEFAULT NULL,
      `CHANNEL_ID` bigint(20) NOT NULL,
      `GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`ID`),
      UNIQUE KEY `PIPELINEUNIQUE` (`NAME`,`CHANNEL_ID`),
      KEY `idx_ChannelID` (`CHANNEL_ID`,`ID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `PIPELINE_NODE_RELATION` (
      `ID` bigint(20) NOT NULL AUTO_INCREMENT,
      `NODE_ID` bigint(20) NOT NULL,
      `PIPELINE_ID` bigint(20) NOT NULL,
      `LOCATION` varchar(20) NOT NULL,
      `GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`ID`),
      KEY `idx_PipelineID` (`PIPELINE_ID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `SYSTEM_PARAMETER` (
      `ID` bigint(20) unsigned NOT NULL,
      `VALUE` text DEFAULT NULL,
      `GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`ID`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    CREATE TABLE `TABLE_HISTORY_STAT` (
      `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
      `FILE_SIZE` bigint(20) DEFAULT NULL,
      `FILE_COUNT` bigint(20) DEFAULT NULL,
      `INSERT_COUNT` bigint(20) DEFAULT NULL,
      `UPDATE_COUNT` bigint(20) DEFAULT NULL,
      `DELETE_COUNT` bigint(20) DEFAULT NULL,
      `DATA_MEDIA_PAIR_ID` bigint(20) DEFAULT NULL,
      `PIPELINE_ID` bigint(20) DEFAULT NULL,
      `START_TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `END_TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`ID`),
      KEY `idx_DATA_MEDIA_PAIR_ID_END_TIME` (`DATA_MEDIA_PAIR_ID`,`END_TIME`),
      KEY `idx_GmtCreate_id` (`GMT_CREATE`,`ID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `TABLE_STAT` (
      `ID` bigint(20) NOT NULL AUTO_INCREMENT,
      `FILE_SIZE` bigint(20) NOT NULL,
      `FILE_COUNT` bigint(20) NOT NULL,
      `INSERT_COUNT` bigint(20) NOT NULL,
      `UPDATE_COUNT` bigint(20) NOT NULL,
      `DELETE_COUNT` bigint(20) NOT NULL,
      `DATA_MEDIA_PAIR_ID` bigint(20) NOT NULL,
      `PIPELINE_ID` bigint(20) NOT NULL,
      `GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`ID`),
      KEY `idx_PipelineID_DataMediaPairID` (`PIPELINE_ID`,`DATA_MEDIA_PAIR_ID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `THROUGHPUT_STAT` (
      `ID` bigint(20) NOT NULL AUTO_INCREMENT,
      `TYPE` varchar(20) NOT NULL,
      `NUMBER` bigint(20) NOT NULL,
      `SIZE` bigint(20) NOT NULL,
      `PIPELINE_ID` bigint(20) NOT NULL,
      `START_TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `END_TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`ID`),
      KEY `idx_PipelineID_Type_GmtCreate_ID` (`PIPELINE_ID`,`TYPE`,`GMT_CREATE`,`ID`),
      KEY `idx_PipelineID_Type_EndTime_ID` (`PIPELINE_ID`,`TYPE`,`END_TIME`,`ID`),
      KEY `idx_GmtCreate_id` (`GMT_CREATE`,`ID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `USER` (
      `ID` bigint(20) NOT NULL AUTO_INCREMENT,
      `USERNAME` varchar(20) NOT NULL,
      `PASSWORD` varchar(20) NOT NULL,
      `AUTHORIZETYPE` varchar(20) NOT NULL,
      `DEPARTMENT` varchar(20) NOT NULL,
      `REALNAME` varchar(20) NOT NULL,
      `GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`ID`),
      UNIQUE KEY `USERUNIQUE` (`USERNAME`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    CREATE TABLE  `DATA_MATRIX` (
      `ID` bigint(20) NOT NULL AUTO_INCREMENT,
      `GROUP_KEY` varchar(200) DEFAULT NULL,
      `MASTER` varchar(200) DEFAULT NULL,
      `SLAVE` varchar(200) DEFAULT NULL,
      `DESCRIPTION` varchar(200) DEFAULT NULL,
      `GMT_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `GMT_MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`ID`),
      KEY `GROUPKEY` (`GROUP_KEY`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    
    insert into USER(ID,USERNAME,PASSWORD,AUTHORIZETYPE,DEPARTMENT,REALNAME,GMT_CREATE,GMT_MODIFIED) values(null,'admin','801fc357a5a74743894a','ADMIN','admin','admin',now(),now());
    insert into USER(ID,USERNAME,PASSWORD,AUTHORIZETYPE,DEPARTMENT,REALNAME,GMT_CREATE,GMT_MODIFIED) values(null,'guest','471e02a154a2121dc577','OPERATOR','guest','guest',now(),now());
    

    然后启动Manager:

    bash /opt/manager/bin/startup.sh
    

    如果报什么 之类的错误,是因为在windows上编译的时候采用的是windows的文件格式,在Linux上格式不一致,执行一下如下命令全局替换一下就好了(其他文件类似):

     sed -i 's/
    //g' filename
    

    访问Manager并建立相应的资源:

    在浏览器输入:http://172.16.0.2:8080打开Manager主页,一开始是匿名用户登录的,点击右上角以admin/admin登录管理员账号:

    登录后在机器管理下面添加Zookeeper资源:

    在机器管理下面添加Node:

    启动Node

    查看对应Node的nid并在node的conf文件夹下新建nid文件填入nid:

    准备好nid文件之后就可以启动了:

    bash /opt/node/bin/startup.sh
    

    数秒后在Manager刷新node列表页面,看到上图中的已启动表示连接成功。

    如果有显示未连接的,先关闭对应node:

    bash /opt/node/bin/stop.sh
    

    然后编辑nid文件,把nid改为正确的重新启动即可(有时nid会被自动修改为两个重复值,可能是个bug)。

    Otter远程调试

    编辑运行配置文件然后添加两个Remote配置文件,一个用来调试Manager一个用来调试Node,如下图所示,只需修改红框内的值即可:

    服务器端以debug模式启动:

    Manager :

    bash /opt/manager/bin/startup.sh debug 9090
    

    Node :

    bash /opt/node/bin/startup.sh debug 9090
    

    本地以debug方式启动:

    加断点调试:

    在你想调试的地方加断点然后在浏览器操作对应的部分,执行到对应的代码就会停下来:

    以上完成了Otter的调试环境搭建。

  • 相关阅读:
    浏览器控制台获取百度文库文章内容
    使用python登录CNZZ访问量统计网站,然后获取相应的数据
    使用Python登录腾讯MTA数据分析平台,然后获取相关数据
    使用python读写excel
    python将json转csv
    TCP/IP协议
    PHP smarty
    PHP入门及面向对象
    PHP概览
    PHP整体概览
  • 原文地址:https://www.cnblogs.com/yanshaoshuai/p/12060938.html
Copyright © 2011-2022 走看看