более простой способ отладки узлов, чем размещение точки останова в каждом .затем

#javascript #node.js

#javascript #node.js

Вопрос:

Недавно я перешел к работе с nodejs , хотя это может быть не обязательно nodejs конкретным, прямо сейчас, когда я debug со intellij своим nodejs приложением делаю это:

 somePromise.then(function(success) {
  logger.info('I have to put a breakpoint here');
});
  

итак, в моем потоке много (из-под моего контроля я унаследовал этот проект), много .then , и я не могу отлаживать все request как единое целое. в конечном счете, я хотел бы только для целей отладки иметь возможность помещать a breakpoint только в точку route входа запроса, а затем продолжать отладку, intellij F7/F8 stepin/stepover и это действительно очень сложно, что мне нужно поставить точку останова в какой .then -либо справке по этому вопросу? в наши дни моя жизнь действительно сложна.

Я знаю, что мне не следует использовать debugging слишком много, ведение журнала лучше, но это настоящая жизнь здесь, у меня есть проект, который не включает все записи, которые я хочу, и я не могу их добавить, мне нужно использовать debugging как механизм для понимания потока, код неясен, и иногда это помогает воспроизвестиустранение неполадок таким образом, поэтому, пожалуйста, не предлагайте мне не отлаживать, потому что я действительно хочу отладить это время.

Комментарии:

1. Тот, кто сказал, что вы не должны использовать отладку «слишком много», лучше объясните «слишком много», поскольку отладка — это нормальная деятельность, и ведение журнала на практике не может заменить его всегда.

2. В прошлом я знакомился с этой практикой (это ссылка)

3. «Линус Торвальдс, создатель Linux, не использует отладчик. Роберт К. Мартин, один из изобретателей гибкого программирования, считает, что отладчики — это бесполезная трата времени. Джон Грэм-Камминг ненавидит отладчики. Брайан В. Керниган и Роб Пайк написали, что пошаговое выполнение программы менее продуктивно, чем усердное обдумывание и добавление операторов вывода и самопроверки кода в критических местах. Керниган однажды написал, что наиболее эффективным инструментом отладки по-прежнему является тщательная проработка в сочетании с разумно размещенными операторами печати. » lemire.me/blog/2016/06/21/i-do-not-use-a-debugger

4. Вы пробовали node-inspector? github.com/node-inspector/node-inspector

5. Вы не можете выполнять обещания AFAIK, потому что они по своей сути асинхронны. Что вы могли бы сделать, это изменить библиотеку promise и вставить некоторый код протоколирования в then функцию. Если вы используете kriskowal / q, например, здесь: github.com/kriskowal/q/blob/v1/q.js#L839