Google chrome devtools 无法为devtools启动http服务器。找不到Stop devtools/HTTP/1.1 404
在启动时,我会收到logcat中显示的以下错误消息Google chrome devtools 无法为devtools启动http服务器。找不到Stop devtools/HTTP/1.1 404,google-chrome-devtools,Google Chrome Devtools,在启动时,我会收到logcat中显示的以下错误消息 org.chromium.chrome/chromium:[错误:devtools\u http\u handler.cc(249)]无法为devtools启动http服务器。停止devtools。 我正在运行Chromium build 65.0.3317.0。此错误不会发生在Chromium的早期版本54.0.2840.9上,Chromium devtools工作正常。当我尝试使用devtools检查远程android设备时,会打开一个空白
org.chromium.chrome/chromium:[错误:devtools\u http\u handler.cc(249)]无法为devtools启动http服务器。停止devtools。
我正在运行Chromium build 65.0.3317.0。此错误不会发生在Chromium的早期版本54.0.2840.9上,Chromium devtools工作正常。当我尝试使用devtools检查远程android设备时,会打开一个空白选项卡,出现错误HTTP/1.1 404 Not Found
我还将在抛出错误的文件中附加不同的属性
铬54-devtools_http_handler.cc
void StartServerOnHandlerThread(
base::WeakPtr<DevToolsHttpHandler> handler,
base::Thread* thread,
DevToolsHttpHandler::ServerSocketFactory* server_socket_factory,
const base::FilePath& output_directory,
const base::FilePath& frontend_dir,
bool bundles_resources) {
DCHECK(thread->task_runner()->BelongsToCurrentThread());
ServerWrapper* server_wrapper = nullptr;
std::unique_ptr<net::ServerSocket> server_socket =
server_socket_factory->CreateForHttpServer();
std::unique_ptr<net::IPEndPoint> ip_address(new net::IPEndPoint);
if (server_socket) {
server_wrapper = new ServerWrapper(handler, std::move(server_socket),
frontend_dir, bundles_resources);
if (!output_directory.empty())
server_wrapper->WriteActivePortToUserProfile(output_directory);
if (server_wrapper->GetLocalAddress(ip_address.get()) != net::OK)
ip_address.reset();
} else {
ip_address.reset();
LOG(ERROR) << "Cannot start http server for devtools. Stop devtools.";
}
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
base::Bind(&ServerStartedOnUI,
handler,
thread,
server_wrapper,
server_socket_factory,
base::Passed(&ip_address)));
}
void StartServerOnHandlerThread(
base::WeakPtr<DevToolsHttpHandler> handler,
std::unique_ptr<base::Thread> thread,
std::unique_ptr<DevToolsSocketFactory> socket_factory,
const base::FilePath& output_directory,
const base::FilePath& frontend_dir,
const std::string& browser_guid,
bool bundles_resources) {
DCHECK(thread->task_runner()->BelongsToCurrentThread());
std::unique_ptr<ServerWrapper> server_wrapper;
std::unique_ptr<net::ServerSocket> server_socket =
socket_factory->CreateForHttpServer();
std::unique_ptr<net::IPEndPoint> ip_address(new net::IPEndPoint);
if (server_socket) {
server_wrapper.reset(new ServerWrapper(handler, std::move(server_socket),
frontend_dir, bundles_resources));
if (server_wrapper->GetLocalAddress(ip_address.get()) != net::OK)
ip_address.reset();
} else {
ip_address.reset();
}
if (ip_address) {
std::string message = base::StringPrintf(
"\nDevTools listening on ws://%s%s\n", ip_address->ToString().c_str(),
browser_guid.c_str());
fprintf(stderr, "%s", message.c_str());
fflush(stderr);
// Write this port to a well-known file in the profile directory
// so Telemetry can pick it up.
if (!output_directory.empty()) {
base::FilePath path =
output_directory.Append(kDevToolsActivePortFileName);
std::string port_target_string = base::StringPrintf(
"%d\n%s", ip_address->port(), browser_guid.c_str());
if (base::WriteFile(path, port_target_string.c_str(),
static_cast<int>(port_target_string.length())) < 0) {
LOG(ERROR) << "Error writing DevTools active port to file";
}
}
} else {
LOG(ERROR) << "Cannot start http server for devtools. Stop devtools.";
}
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
base::BindOnce(&ServerStartedOnUI, std::move(handler), thread.release(),
server_wrapper.release(), socket_factory.release(),
std::move(ip_address)));
}
void StartServerOnHandlerThread(
base::WeakPtr处理程序,
基本::线程*线程,
DevToolsHttpHandler::ServerSocketFactory*服务器插座工厂,
常量基::文件路径和输出目录,
常量基::文件路径和前端目录,
布尔包(U资源){
DCHECK(线程->任务运行程序()->属于当前线程());
ServerWrapper*server_wrapper=nullptr;
std::唯一的\u ptr服务器\u套接字=
服务器\u套接字\u工厂->CreateForHttpServer();
std::唯一的ptr ip地址(新的网络::IPEndPoint);
if(服务器\ U套接字){
server\u wrapper=newserverwrapper(处理程序,std::move(server\u套接字),
前端_dir、捆绑_资源);
如果(!output_directory.empty())
服务器\u包装->WriteActivePortToUserProfile(输出\u目录);
if(server\u wrapper->GetLocalAddress(ip\u address.get())!=net::OK)
ip_地址。重置();
}否则{
ip_地址。重置();
日志(错误)任务\u runner()->BelongsToCurrentThread());
std::唯一的\u ptr服务器\u包装器;
std::唯一的\u ptr服务器\u套接字=
套接字工厂->CreateForHttpServer();
std::唯一的ptr ip地址(新的网络::IPEndPoint);
if(服务器\ U套接字){
重置(新的ServerWrapper(处理程序,std::move(服务器套接字)),
前端_dir,bundle_resources));
if(server\u wrapper->GetLocalAddress(ip\u address.get())!=net::OK)
ip_地址。重置();
}否则{
ip_地址。重置();
}
如果(ip_地址){
std::string message=base::StringPrintf(
“\n侦听ws://%s%s\n”的VTools,ip\U地址->ToString().c\u str(),
浏览器_guid.c_str());
fprintf(stderr,“%s”,message.c_str());
fflush(stderr);
//将此端口写入配置文件目录中的已知文件
//所以遥测技术可以检测到它。
如果(!output_directory.empty()){
基本::文件路径=
output_directory.Append(kdevtoolsactiveport文件名);
std::string port\u target\u string=base::StringPrintf(
%d\n%s,“ip地址->端口(),浏览器\u guid.c\u str());
if(base::WriteFile(path,port\u target\u string.c\u str(),
静态\u转换(端口\u目标\u字符串.length())<0){
日志(错误)