<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Problem mit Übungsaufgabe]]></title><description><![CDATA[<p>habe folgende übungsaufgabe aus einem höheren semester und wollte sie mal durchgehen. allerdings fehlt mir ein ansatz, wie ich das ganze realisieren kann.</p>
<pre><code class="language-cpp">Für C++-Programme soll ein allgemein verwendbarer Monitor realisiert werden, welcher die
Aufrufe bestimmter Funktionen protokolliert. Sei z.B. das folgende Programm gegeben:

void f(void)
{
//...
return;
}
main()
{
//...
f();
}

Im Falle der Überwachung von main() und f() soll bei Ausführung des Programms ein Protokoll
der folgenden Form auf dem Bildschirm ausgegeben werden:
Enter main
Enter f
Leave f
Leave main
Zur Realisierung der Monitor-Funktionalität sollen die ausführbaren Anweisungen der zu
überwachenden Funktionen weder verändert noch erweitert werden.
</code></pre>
<p>Das Enter main könnte ich hinbekommen indem ich einfach ein</p>
<pre><code class="language-cpp">cout &lt;&lt; &quot;Enter main&quot;;
</code></pre>
<p>in den Konstruktor einer Klasse schreib, die ich ganz oben deklarieren könnt. Aber dann der Rest? Ich steh n bissl auf dem schlauch. Kann ich das ebenfalls durch den Einsatz einer Klasse realisieren?</p>
<p>wäre dankbar, wenn mir jemand nen denkanstoss geben kann</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/123048/problem-mit-übungsaufgabe</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 10:34:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/123048.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 12 Oct 2005 13:55:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Übungsaufgabe on Wed, 12 Oct 2005 13:55:56 GMT]]></title><description><![CDATA[<p>habe folgende übungsaufgabe aus einem höheren semester und wollte sie mal durchgehen. allerdings fehlt mir ein ansatz, wie ich das ganze realisieren kann.</p>
<pre><code class="language-cpp">Für C++-Programme soll ein allgemein verwendbarer Monitor realisiert werden, welcher die
Aufrufe bestimmter Funktionen protokolliert. Sei z.B. das folgende Programm gegeben:

void f(void)
{
//...
return;
}
main()
{
//...
f();
}

Im Falle der Überwachung von main() und f() soll bei Ausführung des Programms ein Protokoll
der folgenden Form auf dem Bildschirm ausgegeben werden:
Enter main
Enter f
Leave f
Leave main
Zur Realisierung der Monitor-Funktionalität sollen die ausführbaren Anweisungen der zu
überwachenden Funktionen weder verändert noch erweitert werden.
</code></pre>
<p>Das Enter main könnte ich hinbekommen indem ich einfach ein</p>
<pre><code class="language-cpp">cout &lt;&lt; &quot;Enter main&quot;;
</code></pre>
<p>in den Konstruktor einer Klasse schreib, die ich ganz oben deklarieren könnt. Aber dann der Rest? Ich steh n bissl auf dem schlauch. Kann ich das ebenfalls durch den Einsatz einer Klasse realisieren?</p>
<p>wäre dankbar, wenn mir jemand nen denkanstoss geben kann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/890659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/890659</guid><dc:creator><![CDATA[SkEaToN]]></dc:creator><pubDate>Wed, 12 Oct 2005 13:55:56 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Übungsaufgabe on Wed, 12 Oct 2005 14:05:22 GMT]]></title><description><![CDATA[<p><a href="http://www.cpp-tutor.de/cpp/le07/le07_02.htm" rel="nofollow">http://www.cpp-tutor.de/cpp/le07/le07_02.htm</a></p>
<p>SkEaToN schrieb:</p>
<blockquote>
<p>Das Enter main könnte ich hinbekommen indem ich einfach ein in den Konstruktor einer Klasse schreib, die ich ganz oben deklarieren könnt.</p>
</blockquote>
<p>ist keine klasse sondern eine funktion</p>
]]></description><link>https://www.c-plusplus.net/forum/post/890676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/890676</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Wed, 12 Oct 2005 14:05:22 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Übungsaufgabe on Wed, 12 Oct 2005 14:17:17 GMT]]></title><description><![CDATA[<p>miller_m schrieb:</p>
<blockquote>
<p>ist keine klasse sondern eine funktion</p>
</blockquote>
<p>hmm, versteh jetzt net ganz was du meinst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> was ist keine klasse?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Monitor
{
 public:
      Monitor();
      ~Monitor();    
};

Monitor::Monitor() { cout &lt;&lt; &quot;Enter main&quot; &lt;&lt; endl; }
Monitor::~Monitor() { cout &lt;&lt; &quot;Leave main&quot; &lt;&lt; endl; }

Monitor x;

void f()
{

}

int main()
{
    f();
}
</code></pre>
<p>Ein solches Beispiel war auch schonmal in unserem Skript erklärt, aber der Rest ist mir noch unklar. Bin ich mit ner Klasse auf dem richtigen Weg?</p>
<p>/edit: hehe, mir is grad noch eingefallen dass ich Leave main ja mit dem Destruktor machen kann. Bleibt nur noch die f()</p>
]]></description><link>https://www.c-plusplus.net/forum/post/890684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/890684</guid><dc:creator><![CDATA[SkEaToN]]></dc:creator><pubDate>Wed, 12 Oct 2005 14:17:17 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Übungsaufgabe on Wed, 12 Oct 2005 14:46:02 GMT]]></title><description><![CDATA[<p>Da würde mir auf anhieb nur einfallen, am Anfang jeder überwachten Funktion ein &quot;Monitor x([Funktionsname]);&quot; einzutragen, mit einer Anpassung deiner Monitor-Klasse:</p>
<pre><code class="language-cpp">class Monitor
{
  std::string fun;
public:
  Monitor(std::string was):fun(was) { cout &lt;&lt; &quot;Enter &quot; &lt;&lt; was &lt;&lt; endl; }
  ~Monitor() { cout &lt;&lt; &quot;Leave &quot; &lt;&lt; fun &lt;&lt; endl; }
}
</code></pre>
<p>Aber ich glaube, das würde einen Eingriff in die beobachteten Funktionen bedeuten, der anscheinend verboten ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/890731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/890731</guid><dc:creator><![CDATA[CS]]></dc:creator><pubDate>Wed, 12 Oct 2005 14:46:02 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Übungsaufgabe on Wed, 12 Oct 2005 18:37:58 GMT]]></title><description><![CDATA[<p>naja ich hab sowas in der art</p>
<p>App_dump(&quot;2000&quot;,&quot;text: bla bla bla&quot;);</p>
<p>diese funktion ist überall bekannt ( kann überall aufgerufen werden (static) )</p>
<p>der erste parameter kennzeichnet den log range, der 2te den text.</p>
<p>warum log range?</p>
<p>weil wenn ich ein projekt habe mit z.b. 100 klassen ( kein witz! ) dann kann ich z.b. den log aktivieren und angeben welcher bereich gelogt wird</p>
<p>z.b. hab ich ausgemacht das der bereich 100 - 9999 alle db zugriffe sind<br />
1000 - 1499 von main frame aus<br />
1500 - 1600 bla bla bla</p>
<p>dann mach ich noch immer noch ne 10ner unterteilung. damit kann ich jeder fkt 10 verschiedene texte mitgeben</p>
<p>z.b.</p>
<pre><code class="language-cpp">void CCustDb::App_CustDB_Connection( ....... )
{

App_dump(&quot;200&quot;,&quot;Enter CCustDb::App_CustDB_Connection&quot;);
..

if(blax1 == 1 )
{
App_dump(&quot;201&quot;,&quot;blax1&quot;);
}
else
{
App_dump(&quot;202&quot;,&quot;serverIP nicht vorhanden&quot;);  // z.b. einfach
}

App_dump(&quot;209&quot;,&quot;Leave CCustDb::App_CustDB_Connection&quot;);
}
</code></pre>
<p>die App_dump kümmert sich um die protokolierungen auf dem filesystem.</p>
<p>ich hab auch eingeben das die xxx bis xxx log ranges in die datei bblog_db.txt<br />
reinkommen die xxxx bis xxxx in die datei bblog_mainframe.txt ect.</p>
<p>bei der aktivierung geb ich an welche ranges ich loggen will, und nur die werden dann geschrieben, so kann man schön schlang bleiben. allein meine ganzen db zugriffe beim programm start können 300 zeilen logs verurschen. zu beachten ist, dass bei manchen ranges es so eingestellt werden kann dass sofort geschrieben wird. wenn man erst sammeln will und dann schreiben, dann kann es sein, das beim programmabsturz nicht ins filesystem geschrieben wird. da muss man halt einen kompromiss machen.</p>
<p>wie machen es sonst so die anderen hier?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/890873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/890873</guid><dc:creator><![CDATA[log_range]]></dc:creator><pubDate>Wed, 12 Oct 2005 18:37:58 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Übungsaufgabe on Thu, 13 Oct 2005 07:03:03 GMT]]></title><description><![CDATA[<p>dein beispiel ist interessant, danke erstmal dafür, ich werds mir mal genauer anschauen und versuchen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/891058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/891058</guid><dc:creator><![CDATA[SkEaToN]]></dc:creator><pubDate>Thu, 13 Oct 2005 07:03:03 GMT</pubDate></item></channel></rss>