<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: GDB. Команда &apos;step&apos; не входит в функцию.</title>
    <link>https://opennet.me/openforum/vsluhforumID9/10474.html</link>
    <description>Здравствуйте!&lt;br&gt;Использую язык C++ и отладчик gdb. Вот исходный код:&lt;br&gt;&lt;br&gt;---------------------------------------------------------------&lt;br&gt;#include &amp;lt;algorithm&amp;gt;&lt;br&gt;#include &amp;lt;iostream&amp;gt;&lt;br&gt;#include &amp;lt;vector&amp;gt;&lt;br&gt;&lt;br&gt;using namespace std;&lt;br&gt;&lt;br&gt;pair&amp;lt;bool, double&amp;gt; CalcMedian(vector&amp;lt;double&amp;gt; samples) &#123;&lt;br&gt;    // верните &#123;true, медиана&#125;, если она существует,&lt;br&gt;    // то есть вектор непустой,&lt;br&gt;    // иначе - &#123;false, 0&#125;&lt;br&gt;    // обратите внимание - вектор принимаем по значению,&lt;br&gt;    // так как его придётся немного подпортить, чтобы вернуть ответ&lt;br&gt;    pair&amp;lt;bool, double&amp;gt; result(false, 0);&lt;br&gt;&lt;br&gt;    if (!samples.empty())&lt;br&gt;    &#123;&lt;br&gt;        sort(samples.begin(), samples.end());&lt;br&gt;        double median = 0;&lt;br&gt;        int mid_index = samples.size() / 2;&lt;br&gt;        if (samples.size() &#037; 2 == 0)&lt;br&gt;        &#123;&lt;br&gt;            median = (samples&#091;mid_index - 1&#093; + samples&#091;mid_index&#093;) / 2;&lt;br&gt;        &#125;&lt;br&gt;        else&lt;br&gt;        &#123;&lt;br&gt;            median = samples&#091;mid_index&#093;;&lt;br&gt;        &#125;&lt;br&gt;        result.first = true;&lt;br&gt;        result.second = median;&lt;br&gt;    &#125;&lt;br&gt;    return result;&lt;br&gt;&#125;&lt;br&gt;</description>

<item>
    <title>GDB. Команда &apos;step&apos; не входит в функцию. (n00by)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/10474.html#3</link>
    <pubDate>Thu, 06 Jun 2024 11:51:40 GMT</pubDate>
    <description>Если точку останова не хочется задавать в GDB, есть вариант расставить в исходнике:&lt;br&gt;&lt;br&gt;#ifndef IM_DEBUGGING&lt;br&gt;#define BP&lt;br&gt;#else&lt;br&gt;#define BP __asm__ volatile (&quot;.att_syntax &#092;n int  $0x03 &#092;n&quot;);&lt;br&gt;#endif&lt;br&gt;</description>
</item>

<item>
    <title>Благодарность (Tsorion)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/10474.html#2</link>
    <pubDate>Mon, 13 May 2024 10:32:14 GMT</pubDate>
    <description>Спасибо! finish - рабочий варинат.&lt;br&gt;Наверное, это и есть оптимальное решение.&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>GDB. Команда &apos;step&apos; не входит в функцию. (tricky)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/10474.html#1</link>
    <pubDate>Mon, 13 May 2024 08:52:58 GMT</pubDate>
    <description>&amp;gt; Почему вызывается конструктор, я понимаю, но я хочу каким-то способом избежать этого, &lt;br&gt;&amp;gt; и сразу попасть внутрь функции CalcMedian(). Как сделать это? Только не &lt;br&gt;&amp;gt; через установку break внутри функции CalcMedian().&lt;br&gt;&lt;br&gt;В gdb есть команда finish. Когда по команде step происходит вход в конструктор vector&apos;а, то если дать команду finish, то отладчик отработает текущую функцию (то есть конструктор vector) и выйдет снова в функцию main, откуда мы и вызвали step. А теперь надо снова ввести step, и отладчик войдёт в CalcMedian.&lt;br&gt;&lt;br&gt;46    pair&amp;lt;bool, double&amp;gt; result = CalcMedian(samples);&lt;br&gt;(gdb) step&lt;br&gt;std::vector&amp;lt;double, std::allocator&amp;lt;double&amp;gt; &amp;gt;::vector (this=0x7fffffffe0a0, __x=...) at /usr/include/c++/8/bits/stl_vector.h:458&lt;br&gt;458      vector(const vector&amp; __x)&lt;br&gt;&lt;br&gt;(gdb) finish&lt;br&gt;Run till exit from #0  std::vector&amp;lt;double, std::allocator&amp;lt;double&amp;gt; &amp;gt;::vector (this=0x7fffffffe0a0, __x=...)&lt;br&gt;    at /usr/include/c++/8/bits/stl_vector.h:458&lt;br&gt;&lt;br&gt;0x00005555555596b0 in main () at db1.cpp:46&lt;br&gt;46    pair&amp;lt;bool, double&amp;gt; result = Ca</description>
</item>

</channel>
</rss>
