1

我的 Chrome DevTools 在我设置的断点处暂停。

我去控制台,我手动调用一个函数(比如,myFunc()),它正确执行。

但是,我在里面设置的断点myFunc()永远不会被击中!我期望当我调用函数时,代码中的函数应该被调用并且断点应该被命中!

源代码非常简单:

// Import stylesheets
import './style.css';

// Write TypeScript code!
const appDiv: HTMLElement = document.getElementById('app');
appDiv.innerHTML = `<h1>TypeScript Starter</h1>`;

appDiv.__proto__.myFunc = function(){
  var myCoolFunction = "My cool function"; //. <---- breakpoint on this line is never hit
  console.log('myCoolFunction:', myCoolFunction);
}
console.log('appDiv', appDiv); // <---- manually call appDiv.myFunc() while paused on this line

这是该页面的链接:https ://typescript-gmngl3.stackblitz.io/~/index.ts

链接到 Stackblitz 中的源代码:https ://stackblitz.com/edit/typescript-gmngl3

截屏:

Stackblitz 控制台

4

2 回答 2

2

似乎您在屏幕截图的第 12 行的断点处暂停,并且您正试图从那里调用该函数。由于调试器已经在那里暂停,我的猜测(“猜测”,因为我不熟悉调试器的内部结构)是它不能在不使用调试器控件的情况下跳转到任何其他断点。

建议的解决方法:当调试器在第 12 行暂停时,将 的引用分配给appDiv控制台中的新变量:

savedAppDiv = appDiv

然后继续,让脚本完全运行。之后,您可以使用存储的引用进行调用myFunc,它应该在其中的断点处暂停:

savedAppDiv.myFunc()
于 2020-02-20T21:10:04.517 回答
1

您可以在控制台中调用 debug(function),它应该在函数的第一行添加一个断点。以下是更多详细信息:https ://developers.google.com/web/tools/chrome-devtools/javascript/breakpoints#function

在您的情况下,将其写入控制台:

debug(appDiv.myFunc);

// now you can call myFunc and it should hit a breakpoint

appDiv.myFunc()
于 2020-02-20T07:29:18.417 回答