{"id":3228,"date":"2019-09-05T11:08:56","date_gmt":"2019-09-05T11:08:56","guid":{"rendered":"https:\/\/tridenstechnology.com\/?p=3228"},"modified":"2022-03-01T15:10:30","modified_gmt":"2022-03-01T15:10:30","slug":"oracle-brm-policy-opcode-benutzerdefinierter-code-debugging-uber-gdb","status":"publish","type":"post","link":"https:\/\/tridenstechnology.com\/de\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/","title":{"rendered":"Oracle BRM Policy Opcode Benutzerdefinierter Code Debugging \u00fcber GDB"},"content":{"rendered":"<p>Wenn wir ein hochwertiges Produkt unserer <a href=\"https:\/\/tridenstechnology.com\/oracle-brm\/\">Oracle BRM<\/a> Software zu entwickeln, m\u00fcssen wir einige Anforderungen an unseren Entwicklungsprozess erf\u00fcllen. Es ist besonders wichtig, gute Test- und Debugging-Techniken in unseren Entwicklungsprozess einzubauen.<br>Testen ist ein Prozess, bei dem Bugs oder Fehler in einem Softwareprodukt aufgesp\u00fcrt werden. Dieser Prozess wird manuell von einem Tester durchgef\u00fchrt oder kann automatisiert werden.<br><a href=\"https:\/\/en.wikipedia.org\/wiki\/Debugging\">Fehlersuche<\/a> ist der Prozess der Suche und Behebung von Fehlern oder Problemen in einem Computerprogramm, die den korrekten Betrieb von Computersoftware oder eines Systems verhindern. Im Grunde handelt es sich um einen Prozess zur Behebung der in der Testphase gefundenen Fehler. Der Programmierer oder Entwickler ist f\u00fcr das Debugging verantwortlich und es kann nicht automatisiert werden.<\/p>\n\n\n\n<div class=\"wp-block-yoast-seo-table-of-contents yoast-table-of-contents\"><h2>Inhaltsverzeichnis<\/h2><ul><li><a href=\"#h-debugging-oracle-brm-policy-opcodes-custom-code\" data-level=\"2\">Debuggen von benutzerdefiniertem Code f\u00fcr Oracle BRM-Richtlinien-Opcodes<\/a><\/li><li><a href=\"#h-debugging-in-practice\" data-level=\"2\">Fehlersuche in der Praxis<\/a><\/li><\/ul><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-debugging-oracle-brm-policy-opcodes-custom-code\">Debuggen von benutzerdefiniertem Code f\u00fcr Oracle BRM-Richtlinien-Opcodes<\/h2>\n\n\n\n<p>Beim Anpassen von Richtlinien-Opcodes in <a href=\"https:\/\/tridenstechnology.com\/oracle-brm\/\">Oracle BRM<\/a> Es ist oft notwendig, einen Code zu debuggen, um m\u00f6gliche Fehler zu finden oder das Verhalten des Codes zu analysieren. Einige grundlegende Analysen k\u00f6nnen mit der Protokollierung einiger Debug-Meldungen und der Analyse von Protokollen durchgef\u00fchrt werden, aber eine viel fortgeschrittenere und leistungsf\u00e4higere Methode ist die Verwendung eines separaten Tools - des Debuggers. In diesem Artikel werden wir uns ansehen, wie wir den Open-Source-Debugger GDB verwenden k\u00f6nnen, um einen Oracle BRM cm-Prozess zu debuggen, der auch einige benutzerdefinierte Codes ausf\u00fchrt (siehe das Bild unten).<\/p>\n\n\n\n<div class=\"wp-block-image dt-pswp-item\"><figure class=\"aligncenter\"><a class=\"dt-pswp-item\" href=\"https:\/\/tridenstechnology.com\/wp-content\/uploads\/2019\/09\/Debugging-Oracle-BRM-CM-GDB.png\"><img fetchpriority=\"high\" decoding=\"async\" width=\"593\" height=\"266\" src=\"https:\/\/tridenstechnology.com\/wp-content\/uploads\/2019\/09\/Debugging-Oracle-BRM-CM-GDB.png\" alt=\"Fehlersuche bei Oracle BRM CM mit GDB\" class=\"wp-image-3230\" srcset=\"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/09\/Debugging-Oracle-BRM-CM-GDB.png 593w, https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/09\/Debugging-Oracle-BRM-CM-GDB-300x135.png 300w\" sizes=\"(max-width: 593px) 100vw, 593px\" \/><\/a><figcaption>Schematischer \u00dcberblick \u00fcber das Debugging von Oracle BRM CM mit GDB<\/figcaption><\/figure><\/div>\n\n\n\n<p><a href=\"https:\/\/www.gnu.org\/software\/gdb\/\">GDB<\/a> ist ein Open-Source-Debugger, der viele fortschrittliche und leistungsstarke Tools zum Analysieren und Debuggen unseres Codes bietet. Einige der grundlegenden Funktionen von GDB sind Haltepunkte (bedingt\/unbedingt), Watches, Back Traces und inkrementelle Codeausf\u00fchrung. Sie k\u00f6nnen nat\u00fcrlich auch Variablenwerte anzeigen und \u00e4ndern und verschiedene Funktionen aufrufen. Sehen wir uns nun an, wie wir GDB mit cm process in der Praxis verwenden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-debugging-in-practice\">Fehlersuche in der Praxis<\/h2>\n\n\n\n<p>Zun\u00e4chst m\u00fcssen wir eine PID f\u00fcr unseren CM-Prozess ermitteln:<\/p>\n\n\n\n<p><em>ps x<\/em><\/p>\n\n\n\n<p>Suchen Sie die PID des CM-Prozesses und verwenden Sie sie, um mit GDB eine Verbindung zu diesem Prozess herzustellen:<\/p>\n\n\n\n<p>gdb cm<\/p>\n\n\n\n<p>Jetzt \u00f6ffnet sich die GDB-Shell, in der wir verschiedene Befehle ausf\u00fchren k\u00f6nnen, die GDB unterst\u00fctzt. Jede neue Verbindung, die zum CM aufgebaut wird, f\u00fchrt dazu, dass ein neuer CM-Kinderprozess vom \u00fcbergeordneten CM gestartet wird. Wir m\u00f6chten, dass GDB auch diese Kindprozesse verfolgt. F\u00fchren Sie den folgenden Befehl in der GDB-Shell aus:<\/p>\n\n\n\n<p>(gdb) setze follow-fork-mode kind<\/p>\n\n\n\n<p>Je nach Ihren Bed\u00fcrfnissen k\u00f6nnen Sie auch die Befehle detach-on-fork und attach verwenden. Lassen Sie uns nun einen Haltepunkt f\u00fcr eine Policy-Opcode-Implementierung setzen, wie im folgenden Beispiel:<\/p>\n\n\n\n<p>(gdb) break fm_act_pol_post_reauthorize.c:192<\/p>\n\n\n\n<p>Wenn wir nun die Ausf\u00fchrung von Policy-Opcodes ausl\u00f6sen, wird diese durch einen Haltepunkt unterbrochen (oder sogar schon vorher benachrichtigt, dass ein neues Kind erzeugt wurde). Mit den Befehlen next (Abk. n) oder step k\u00f6nnen wir dann den Codefluss Schritt f\u00fcr Schritt verfolgen. Wenn wir an einem Variablenwert interessiert sind, k\u00f6nnen wir ihn mit ausgeben:<\/p>\n\n\n\n<p>drucken<\/p>\n\n\n\n<div class=\"wp-block-image dt-pswp-item\"><figure class=\"aligncenter\"><a class=\"dt-pswp-item\" href=\"https:\/\/tridenstechnology.com\/wp-content\/uploads\/2019\/09\/Oracle-BRM-CM-process-debugging-example.png\"><img decoding=\"async\" width=\"840\" height=\"413\" src=\"https:\/\/tridenstechnology.com\/wp-content\/uploads\/2019\/09\/Oracle-BRM-CM-process-debugging-example.png\" alt=\"Beispiel f\u00fcr die Fehlersuche im Oracle BRM CM-Prozess\" class=\"wp-image-3239\" srcset=\"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/09\/Oracle-BRM-CM-process-debugging-example.png 840w, https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/09\/Oracle-BRM-CM-process-debugging-example-300x148.png 300w, https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/09\/Oracle-BRM-CM-process-debugging-example-768x378.png 768w\" sizes=\"(max-width: 840px) 100vw, 840px\" \/><\/a><figcaption>Beispiel f\u00fcr die Verwendung von GDB zum Debuggen des Oracle BRM CM-Prozesses<\/figcaption><\/figure><\/div>\n\n\n\n<p>Wir verf\u00fcgen auch \u00fcber viele weitere fortgeschrittene und leistungsstarke Funktionen, die in der GDB-Dokumentation und der integrierten Hilfe ausf\u00fchrlich beschrieben sind. Sie sind herzlich eingeladen, diese zu erforschen, um zu sehen, wie sie Ihnen helfen k\u00f6nnen.<\/p>","protected":false},"excerpt":{"rendered":"<p>Wenn wir unsere Oracle BRM-Software in hoher Qualit\u00e4t produzieren wollen, m\u00fcssen wir einige Anforderungen an unseren Entwicklungsprozess erf\u00fcllen. Es ist besonders wichtig, gute Test- und Debugging-Techniken in unseren Entwicklungsprozess einzubauen.1 Testen ist ein Prozess, bei dem Fehler in einem Softwareprodukt gefunden werden, der manuell von einem Tester durchgef\u00fchrt wird...<\/p>","protected":false},"author":1,"featured_media":3165,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38],"tags":[],"class_list":["post-3228","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle-billing","category-38","description-off"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.5 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Oracle BRM Policy Opcode Custom Code Debugging via GDB<\/title>\n<meta name=\"description\" content=\"An article about debugging Oracle Billing and Revenue Management (Oracle BRM) policy opcodes custom code using external debugger GDB.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/tridenstechnology.com\/de\/oracle-brm-policy-opcode-benutzerdefinierter-code-debugging-uber-gdb\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Oracle BRM Policy Opcode Custom Code Debugging via GDB\" \/>\n<meta property=\"og:description\" content=\"An article about debugging Oracle Billing and Revenue Management (Oracle BRM) policy opcodes custom code using external debugger GDB.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/tridenstechnology.com\/de\/oracle-brm-policy-opcode-benutzerdefinierter-code-debugging-uber-gdb\/\" \/>\n<meta property=\"og:site_name\" content=\"Tridens\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/tridenstechnology\" \/>\n<meta property=\"article:published_time\" content=\"2019-09-05T11:08:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-01T15:10:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/08\/Oracle-BRM.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1734\" \/>\n\t<meta property=\"og:image:height\" content=\"1156\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ale\u0161\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@TridensTech\" \/>\n<meta name=\"twitter:site\" content=\"@TridensTech\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ale\u0161\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"3\u00a0Minuten\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Oracle BRM Policy Opcode Benutzerdefinierter Code Debugging \u00fcber GDB","description":"Ein Artikel \u00fcber das Debuggen von Oracle Billing and Revenue Management (Oracle BRM) policy opcodes benutzerdefiniertem Code mit dem externen Debugger GDB.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/tridenstechnology.com\/de\/oracle-brm-policy-opcode-benutzerdefinierter-code-debugging-uber-gdb\/","og_locale":"de_DE","og_type":"article","og_title":"Oracle BRM Policy Opcode Custom Code Debugging via GDB","og_description":"An article about debugging Oracle Billing and Revenue Management (Oracle BRM) policy opcodes custom code using external debugger GDB.","og_url":"https:\/\/tridenstechnology.com\/de\/oracle-brm-policy-opcode-benutzerdefinierter-code-debugging-uber-gdb\/","og_site_name":"Tridens","article_publisher":"https:\/\/www.facebook.com\/tridenstechnology","article_published_time":"2019-09-05T11:08:56+00:00","article_modified_time":"2022-03-01T15:10:30+00:00","og_image":[{"width":1734,"height":1156,"url":"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/08\/Oracle-BRM.png","type":"image\/png"}],"author":"Ale\u0161","twitter_card":"summary_large_image","twitter_creator":"@TridensTech","twitter_site":"@TridensTech","twitter_misc":{"Verfasst von":"Ale\u0161","Gesch\u00e4tzte Lesezeit":"3\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/#article","isPartOf":{"@id":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/"},"author":{"name":"Ale\u0161","@id":"https:\/\/tridenstechnology.com\/#\/schema\/person\/ccd247e07a5e0f856ec13af63d611358"},"headline":"Oracle BRM Policy Opcode Custom Code Debugging via GDB","datePublished":"2019-09-05T11:08:56+00:00","dateModified":"2022-03-01T15:10:30+00:00","mainEntityOfPage":{"@id":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/"},"wordCount":515,"commentCount":0,"publisher":{"@id":"https:\/\/tridenstechnology.com\/#organization"},"image":{"@id":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/#primaryimage"},"thumbnailUrl":"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/08\/Oracle-BRM.png","articleSection":["Oracle Billing"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/#respond"]}],"accessibilityFeature":["tableOfContents"]},{"@type":"WebPage","@id":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/","url":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/","name":"Oracle BRM Policy Opcode Benutzerdefinierter Code Debugging \u00fcber GDB","isPartOf":{"@id":"https:\/\/tridenstechnology.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/#primaryimage"},"image":{"@id":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/#primaryimage"},"thumbnailUrl":"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/08\/Oracle-BRM.png","datePublished":"2019-09-05T11:08:56+00:00","dateModified":"2022-03-01T15:10:30+00:00","description":"Ein Artikel \u00fcber das Debuggen von Oracle Billing and Revenue Management (Oracle BRM) policy opcodes benutzerdefiniertem Code mit dem externen Debugger GDB.","breadcrumb":{"@id":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/#primaryimage","url":"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/08\/Oracle-BRM.png","contentUrl":"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/08\/Oracle-BRM.png","width":1734,"height":1156,"caption":"Oracle BRM - Billing and Revenue Management"},{"@type":"BreadcrumbList","@id":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/tridenstechnology.com\/"},{"@type":"ListItem","position":2,"name":"Oracle BRM Policy Opcode Custom Code Debugging via GDB"}]},{"@type":"WebSite","@id":"https:\/\/tridenstechnology.com\/#website","url":"https:\/\/tridenstechnology.com\/","name":"Tridens","description":"Monetarisierung, Abrechnung &amp; EV-Laden","publisher":{"@id":"https:\/\/tridenstechnology.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/tridenstechnology.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/tridenstechnology.com\/#organization","name":"Tridens","url":"https:\/\/tridenstechnology.com\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/tridenstechnology.com\/#\/schema\/logo\/image\/","url":"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/02\/tridens_logo_invert.png","contentUrl":"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/02\/tridens_logo_invert.png","width":600,"height":191,"caption":"Tridens"},"image":{"@id":"https:\/\/tridenstechnology.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/tridenstechnology","https:\/\/x.com\/TridensTech","https:\/\/www.instagram.com\/tridenstechnology\/","https:\/\/www.linkedin.com\/company\/tridens","https:\/\/www.youtube.com\/user\/TridensIT"]},{"@type":"Person","@id":"https:\/\/tridenstechnology.com\/#\/schema\/person\/ccd247e07a5e0f856ec13af63d611358","name":"Ale\u0161","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/0df040b8c52446051022ab32cd2ac1dc64d3c7eed18d5bd5ab9f2992b8935fc8?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0df040b8c52446051022ab32cd2ac1dc64d3c7eed18d5bd5ab9f2992b8935fc8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0df040b8c52446051022ab32cd2ac1dc64d3c7eed18d5bd5ab9f2992b8935fc8?s=96&d=mm&r=g","caption":"Ale\u0161"},"description":"Ales Pristovnik ist der CEO von Tridens Technology, einem slowenischen Unternehmen, das sich auf die Entwicklung von Softwarel\u00f6sungen f\u00fcr die Automobilindustrie spezialisiert hat. Er blickt auf eine lange Erfahrung in der IT-Branche zur\u00fcck und hat in der Vergangenheit f\u00fcr mehrere gro\u00dfe Unternehmen gearbeitet. Er hat eine Leidenschaft f\u00fcr Technologie und Innovation und konzentriert sich derzeit auf die Entwicklung von L\u00f6sungen, die die Sicherheit und Effizienz in der Automobilindustrie verbessern werden. Er verf\u00fcgt \u00fcber einen starken Hintergrund in den Bereichen F\u00fchrung und Management und setzt sich daf\u00fcr ein, sein Unternehmen im sich st\u00e4ndig weiterentwickelnden Technologiesektor voranzubringen.","url":"https:\/\/tridenstechnology.com\/de\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/tridenstechnology.com\/de\/wp-json\/wp\/v2\/posts\/3228","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tridenstechnology.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tridenstechnology.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tridenstechnology.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tridenstechnology.com\/de\/wp-json\/wp\/v2\/comments?post=3228"}],"version-history":[{"count":0,"href":"https:\/\/tridenstechnology.com\/de\/wp-json\/wp\/v2\/posts\/3228\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tridenstechnology.com\/de\/wp-json\/wp\/v2\/media\/3165"}],"wp:attachment":[{"href":"https:\/\/tridenstechnology.com\/de\/wp-json\/wp\/v2\/media?parent=3228"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tridenstechnology.com\/de\/wp-json\/wp\/v2\/categories?post=3228"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tridenstechnology.com\/de\/wp-json\/wp\/v2\/tags?post=3228"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}