#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