<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Debug function name]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Debug function name форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Fri, 10 Apr 2026 09:12:51 +0300</pubDate>
		<item>
			<title>Debug function name</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message56614/topic5781/">Debug function name</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Я по ошибкам вывожу строку текста через debug.getinfo(2), а в assert есть имя функции, аргумента, чтобы в тексте ошибки было имя. Часто этого достаточно для понимания что и где.<br />Правда если скомпилировать без отладочной информации, что всегда и делается, то информация теряется. Для этого, как раз в assert имя функции и прописывается.<br />Если же это для каких-то логических целей, то лучше не через debug.getinfo решать вопрос, конечно. <br />
			<i>12.07.2021 17:49:01, Nikolay.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message56614/topic5781/</link>
			<guid>http://forum.quik.ru/messages/forum10/message56614/topic5781/</guid>
			<pubDate>Mon, 12 Jul 2021 17:49:01 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Debug function name</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message56613/topic5781/">Debug function name</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_qgOwcqGP" href="/user/54/" bx-tooltip-user-id="54">Старатель</a> написал:<br />Есть способ узнать имя функции?<br />=============<br />Почитайте (единственный) ответ на SO по ссылке выше. Ключевое там вот что: в луа <I>все функции анонимны</I>. Сначала определяется анонимное тело, затем анонимное тело присваивается какой-то переменной. Иначе говоря, имя функции не является ее атрибутом, одновременно одно и то же тело может быть присвоено разным переменным, какая из них - правильное имя? То есть правильный ответ - а <I>нет у функции никакого имени</I>. &nbsp;Чисто для удобства отладчик считает, что ближайшая по контексту переменная, хранящая функцию, и есть искомое имя, в данном случае имя аргумента. <br />
			<i>12.07.2021 17:37:03, Anton.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message56613/topic5781/</link>
			<guid>http://forum.quik.ru/messages/forum10/message56613/topic5781/</guid>
			<pubDate>Mon, 12 Jul 2021 17:37:03 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Debug function name</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message56603/topic5781/">Debug function name</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Если функция передается в качестве аргумента, то в debug.getinfo(1).name будет имя не самой функции, а имя аргумента.<br /><br />
====code====
<pre>local function local_comparator(lhs, rhs)
&nbsp;&nbsp; local t = debug.getinfo(1)
&nbsp;&nbsp; message('local_comparator name is ' .. (t.name or 'nil'))
&nbsp;&nbsp; return true
end

function f(arg) arg() end

f(local_comparator) -- MSG: local_comparator name is arg</pre>
=============
<br />Есть способ узнать имя функции? <br />
			<i>12.07.2021 12:26:33, Старатель.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message56603/topic5781/</link>
			<guid>http://forum.quik.ru/messages/forum10/message56603/topic5781/</guid>
			<pubDate>Mon, 12 Jul 2021 12:26:33 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Debug function name</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48169/topic5781/">Debug function name</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Чем дальше в лес, тем злее партизаны )<br /><br />разобрались , Антон, спасибо за участие. <br />
			<i>05.09.2020 21:49:55, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48169/topic5781/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48169/topic5781/</guid>
			<pubDate>Sat, 05 Sep 2020 21:49:55 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Debug function name</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48168/topic5781/">Debug function name</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Получается имена мейна и онстопа - нил, имя вложенной функции находит правильно. Как теория и предполагала. С внешними и с SearchItems до кучи, чтобы два раза не вставать, результаты в комментариях<br /><br />
====code====
<pre>local run = true

function comparator(lhs, rhs)
&nbsp;&nbsp;&nbsp;local t = debug.getinfo(1)
&nbsp;&nbsp;&nbsp;message('comparator name is ' .. (t.name or 'nil'))
&nbsp;&nbsp;&nbsp;return true
end

local function local_comparator(lhs, rhs)
&nbsp;&nbsp;&nbsp;local t = debug.getinfo(1)
&nbsp;&nbsp;&nbsp;message('local_comparator name is ' .. (t.name or 'nil'))
&nbsp;&nbsp;&nbsp;return true
end

function main()
&nbsp;&nbsp;&nbsp;while run do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(100)
&nbsp;&nbsp;&nbsp;end
end

function OnStop()
&nbsp;&nbsp;&nbsp;local function very_local_comparator(lhs, rhs)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local t = debug.getinfo(1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message('very_local_comparator name is ' .. (t.name or 'nil'))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;comparator(1, 2) -- MSG: comparator
&nbsp;&nbsp;&nbsp;local_comparator(1, 2) -- MSG: local_comparator
&nbsp;&nbsp;&nbsp;very_local_comparator(1, 2) -- MSG: very_local_comparator
&nbsp;&nbsp;&nbsp;SearchItems('all_trades', 0, 1, comparator) -- MSG: nil
&nbsp;&nbsp;&nbsp;SearchItems('all_trades', 0, 1, local_comparator) -- MSG: nil
&nbsp;&nbsp;&nbsp;SearchItems('all_trades', 0, 1, very_local_comparator) -- MSG: nil
&nbsp;&nbsp;&nbsp;run = false
end
</pre>
============= <br />
			<i>05.09.2020 20:55:34, Anton.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48168/topic5781/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48168/topic5781/</guid>
			<pubDate>Sat, 05 Sep 2020 20:55:34 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Debug function name</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48166/topic5781/">Debug function name</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			И что получается, чтобы не повторять уже вами сделанное?<br /><br />и если не трудно, вызовите из onstop внешнюю локальную и внешнюю глобальную функции. Покажут ли они свое имя? <br />
			<i>05.09.2020 20:42:46, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48166/topic5781/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48166/topic5781/</guid>
			<pubDate>Sat, 05 Sep 2020 20:42:46 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Debug function name</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48165/topic5781/">Debug function name</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Поверим теорию практикой<br />
====code====
<pre>local run = true

function main()
&nbsp;&nbsp;&nbsp;local t = debug.getinfo(1)
&nbsp;&nbsp;&nbsp;message('main name is ' .. (t.name or 'nil'))
&nbsp;&nbsp;&nbsp;while run do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(100)
&nbsp;&nbsp;&nbsp;end
end

function OnStop()
&nbsp;&nbsp;&nbsp;local t = debug.getinfo(1)
&nbsp;&nbsp;&nbsp;message('OnStop name is ' .. (t.name or 'nil'))
&nbsp;&nbsp;&nbsp;local function inner()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local t = debug.getinfo(1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message('OnStop::inner name is ' .. (t.name or 'nil'))
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;inner()
&nbsp;&nbsp;&nbsp;run = false
end
</pre>
============= <br />
			<i>05.09.2020 20:38:14, Anton.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48165/topic5781/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48165/topic5781/</guid>
			<pubDate>Sat, 05 Sep 2020 20:38:14 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Debug function name</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48164/topic5781/">Debug function name</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_B5iuWzdg" href="/user/47/" bx-tooltip-user-id="47"><noindex><a href="mailto:s_mike@rambler.ru" target="_blank" rel="nofollow">s_mike@rambler.ru</a></noindex></a> написал:<br />то есть я не смогу получить ни одно название функции, вызванной в колбеке или предопределенной функции индикатора?<br />=============<br />Не так, имя самого колбека только. <br />
			<i>05.09.2020 19:57:17, Anton.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48164/topic5781/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48164/topic5781/</guid>
			<pubDate>Sat, 05 Sep 2020 19:57:17 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Debug function name</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48163/topic5781/">Debug function name</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_O7Bu8okv" href="/user/1222/" bx-tooltip-user-id="1222">Anton</a> написал:<br /> <br />====quote====<br /> &nbsp; &nbsp;s_mike@rambler.ru написал:<br /> в getinfo по функции иногда не фигурирует ее название<br />=============<br /> По ссылке выше как раз ответ, если функция вызвана через pcall, дебаггер ее имя не найдет. От себя добавлю, что в квике все колбеки вызываются через pcall, инфа сотка.<br />=============<br />то есть я не смогу получить ни одно название функции, вызванной в колбеке или предопределенной функции индикатора?<br /><br />это утверждение опровергается практикой. Инфа сотка стопудово ) <br />
			<i>05.09.2020 19:51:51, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48163/topic5781/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48163/topic5781/</guid>
			<pubDate>Sat, 05 Sep 2020 19:51:51 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Debug function name</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48162/topic5781/">Debug function name</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_9k6TJ0ob" href="/user/47/" bx-tooltip-user-id="47"><noindex><a href="mailto:s_mike@rambler.ru" target="_blank" rel="nofollow">s_mike@rambler.ru</a></noindex></a> написал:<br /> в getinfo по функции иногда не фигурирует ее название<br />=============<br />По ссылке выше как раз ответ, если функция вызвана через pcall, дебаггер ее имя не найдет. От себя добавлю, что в квике все колбеки вызываются через pcall, инфа сотка. <br />
			<i>05.09.2020 19:48:45, Anton.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48162/topic5781/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48162/topic5781/</guid>
			<pubDate>Sat, 05 Sep 2020 19:48:45 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Debug function name</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48161/topic5781/">Debug function name</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_40gbzMzr" href="/user/1222/" bx-tooltip-user-id="1222">Anton</a> написал:<br /> <br />====quote====<br /> &nbsp; &nbsp;s_mike@rambler.ru написал:<br />это как?<br />=============<br /> Это не tail call, обычный вызов <br />=============<br />Антон, tail call обязательно фигурирует в списке вложенности. Вы это можете легко проверить. <br /><br />речь идёт не о стеке вызовов, тут все правильно. Речь идёт о том, что в getinfo по функции иногда не фигурирует ее название. Хотя вся остальная информация верна, трассировка вызовов правильная.<br /><br />в предыдущих версиях терминала я этого ни разу не замечал, хотя пользуюсь этим механизмом для отладки много лет. В 8.7 тоже было все нормально , а вот в 8.8 - нате вам.<br /><br />может, причуды галактической пыли, может, у меня резкость пропала, а может и нога попала в колесо у разработчиков. <br />
			<i>05.09.2020 19:42:02, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48161/topic5781/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48161/topic5781/</guid>
			<pubDate>Sat, 05 Sep 2020 19:42:02 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Debug function name</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48160/topic5781/">Debug function name</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Однако, <noindex><a href="https://stackoverflow.com/questions/18499086/why-is-name-nil-for-debug-getinfo1" target="_blank" rel="nofollow">все украдено до нас</a></noindex>. <br />
			<i>05.09.2020 19:35:57, Anton.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48160/topic5781/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48160/topic5781/</guid>
			<pubDate>Sat, 05 Sep 2020 19:35:57 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Debug function name</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48159/topic5781/">Debug function name</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_gEMx8fVi" href="/user/47/" bx-tooltip-user-id="47"><noindex><a href="mailto:s_mike@rambler.ru" target="_blank" rel="nofollow">s_mike@rambler.ru</a></noindex></a> написал:<br />это как?<br />=============<br />Это не tail call, обычный вызов функции. <br />
			<i>05.09.2020 18:56:34, Anton.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48159/topic5781/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48159/topic5781/</guid>
			<pubDate>Sat, 05 Sep 2020 18:56:34 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Debug function name</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48158/topic5781/">Debug function name</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_3x9eFnoX" href="/user/1222/" bx-tooltip-user-id="1222">Anton</a> написал:<br />Предположу, что в одних местах функция вызвана &quot;посередине&quot;, а в других происходит tail call, в этом случае уровень 1 заглядывает на функцию выше и, соответственно, локальных имен вызывающей функции не видит.<br />=============<br />ничего не понял. Посередине - это как? Между левой и правой штаниной?)) <br />
			<i>05.09.2020 18:50:20, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48158/topic5781/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48158/topic5781/</guid>
			<pubDate>Sat, 05 Sep 2020 18:50:20 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Debug function name</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48156/topic5781/">Debug function name</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Предположу, что в одних местах функция вызвана &quot;посередине&quot;, а в других происходит tail call, в этом случае уровень 1 заглядывает на функцию выше и, соответственно, локальных имен вызывающей функции не видит. <br />
			<i>05.09.2020 17:34:58, Anton.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48156/topic5781/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48156/topic5781/</guid>
			<pubDate>Sat, 05 Sep 2020 17:34:58 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Debug function name</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48155/topic5781/">Debug function name</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_kO92V1fH" href="/user/54/" bx-tooltip-user-id="54">Старатель</a> написал:<br />Анонимная функция<br />=============<br />Нет. Анонимные функции помечаются явным образом, это видно. <br />
			<i>05.09.2020 11:57:31, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48155/topic5781/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48155/topic5781/</guid>
			<pubDate>Sat, 05 Sep 2020 11:57:31 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Debug function name</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48152/topic5781/">Debug function name</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Анонимная функция <br />
			<i>05.09.2020 11:04:19, Старатель.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48152/topic5781/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48152/topic5781/</guid>
			<pubDate>Sat, 05 Sep 2020 11:04:19 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Debug function name</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message48145/topic5781/">Debug function name</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			В версии 8.8 наблюдаю странную вещь.<br /><br />в одних местах скрипта debug.getinfo(1) выдает таблицу , в которой есть поле name, <br /><br />а других местах в получаемой таблице этого поля нет. Остальные поля вроде на месте.<br /><br />вызов идёт из луа, си функций в последовательности вызова нет.<br /><br />что может быть тому причиной? <br />
			<i>04.09.2020 12:54:32, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message48145/topic5781/</link>
			<guid>http://forum.quik.ru/messages/forum10/message48145/topic5781/</guid>
			<pubDate>Fri, 04 Sep 2020 12:54:32 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
