Su'esu'e le afi Mediastreamer2 VoIP. Vaega 12

O mea o le tusiga e maua mai i laʻu zen alavai.

Su'esu'e le afi Mediastreamer2 VoIP. Vaega 12

I le mulimuli tusiga, Sa ou folafola atu e mafaufau i le mataupu o le fua faatatau o uta ticker ma auala e taulimaina ai le tele o uta komepiuta i le ala o faasalalauga. Ae na ou filifili o le a sili atu ona talafeagai le aofia ai o mataupu o le faʻaaogaina o filiga vaʻavaʻa e fesoʻotaʻi ma faʻamatalaga faʻamatalaga ma naʻo le mafaufau i faʻafitauli o le faʻatinoina o galuega.

Debugging filiga taulima

A maeʻa ona matou suʻesuʻeina le faiga o faʻamatalaga faʻamatalaga i totonu o se alalaupapa faʻasalalau i le tusiga talu ai, e talafeagai le talanoa e uiga i lamatiaga o loʻo natia i totonu. O se tasi o foliga o le "faʻasologa o faʻamatalaga" mataupu faavae o le tuʻufaʻatasia o manatuaga mai le faʻaputuga e tupu i totonu o filiga o loʻo i totonu o faʻapogai o faʻamaumauga, ma o filiga o loʻo i le pito o le ala tafe ua uma ona faʻasoa le manatua ma le toe foʻi mai. i le faupuega. E le gata i lea, o le fatuina o faʻamatalaga fou ma o latou faʻaumatiaga e mafai ona tupu i se mea i totonu o le vaeluagalemu. I se tulaga lautele, o le tuʻuina atu o le manatua e faia e se faamama e ese mai i le mea na faia ai le poloka faʻamaumauga.

Mai le vaaiga o le mataʻituina manino o le manatua, o le a talafeagai mo le faamama, pe a mauaina se poloka ulufale, e vave faʻaumatia pe a maeʻa le gaioiga, faʻasaʻoloto le manatua, ma tuʻu se poloka fou fou ma faʻamaumauga faʻamaumauga i luga o le gaosiga. I lenei tulaga, e mafai ona faigofie ona suʻesuʻeina le faʻalogo i le faamama - pe a iloa e le tagata suʻesuʻe se liki i totonu o le faamama, ona le faʻaumatia lelei lea e le faamama e mulimuli mai ai poloka o loʻo oʻo mai ma o loʻo i ai se mea sese. Ae mai le manatu o le faatumauina o le maualuga o le faatinoga, o lenei auala e galue ai ma poloka faʻamaumauga e le aoga - e taʻitaʻia ai le tele o faʻagaioiga e tuʻufaʻatasia / free manatua mo poloka faʻamaumauga e aunoa ma se aoga aoga.

Mo lenei mafuaʻaga, faʻasalalau faʻasalalau faʻasalalau, ina ia aua neʻi faʻagesegese le faʻaogaina o faʻamaumauga, faʻaaoga galuega e fatuina ai kopi mama pe a kopiina feʻau (na matou talanoa e uiga ia i latou i se tusiga muamua). O nei galuega tauave na o le fatuina o se kopi fou o le ulutala savali e ala i le "faʻapipiʻi" le poloka faʻamatalaga mai le kopi "tua" savali i ai. O se taunuuga, e lua ulutala o loʻo faʻapipiʻi i le tasi poloka faʻamaumauga ma le faʻamaufaʻailoga o loʻo i totonu o le poloka faʻamatalaga e faʻaopoopoina. Ae o le a pei o ni savali se lua. E mafai ona tele fe'au e iai se poloka fa'amatalaga "lautele", mo se fa'ata'ita'iga, ole fa'amama MS_TEE e fa'atupuina ni kopi mama se sefulu i le taimi e tasi, fa'asoa atu i ana galuega. Afai e sa'o lelei filiga uma i le filifili, e oo atu i le faaiuga o le paipa e tatau ona o'o atu le numera o fa'asinoga i le zero ma o le a ta'ua le galuega fa'asoa fa'amanatu: ms_free(). Afai e le tupu le valaau, ona le toe faʻafoʻiina lea o lenei vaega o manatua i le faʻaputuga, i.e. na ia "lea". O le tau o le fa'aaogaina o kopi mama o le leiloa lea o le tomai e faigofie ona fuafua (e pei ona i ai i le tulaga o le fa'aaogaina o kopi masani) lea e fa'amama ai le kalafi o le manatua.

Talu ai o le matafaioi mo le suʻeina o manatuaga o loʻo i totonu o filiga "native" o loʻo taoto i le au atiaʻe o le faʻasalalauga faʻasalalau, o lona uiga e le tatau ona e faʻaaogaina. Ae faʻatasi ai ma lau faʻamama faʻataʻitaʻiga, o oe lava o le sē o lou lava fiafia, ma o le taimi e te faʻaaluina e suʻe ai le gaʻo i lau code o le a faʻalagolago i lou saʻo. Ina ia faʻaitiitia lou taimi faʻapipiʻi, e manaʻomia ona matou vaʻavaʻai i auala e faʻaogaina ai le leak pe a faʻatulagaina filiga. E le gata i lea, e mafai ona tupu o le leak o le a faʻaalia naʻo le faʻaaogaina o le faamama i se faiga moni, lea e mafai ona tele le numera o "tagata masalomia", ma faʻatapulaʻaina le taimi.

E fa'afefea ona fa'aalia mai se galo e manatua?

E talafeagai le fa'apea i le fa'ai'uga o le polokalame tumutumu o le a fa'aalia ai le fa'ateleina o le pasene o manatua o lo'o nofoia e lau talosaga.

O le faʻaaliga i fafo o le a aofia ai i le mea moni e iai se taimi o le a faʻagasolo malie le faiga i le gaioiga o le isumu, faʻasolosolo lemu le lau. E mafai foi ona tupu le log system, 'ai le avanoa i luga o le hard drive. I lenei tulaga, o lau talosaga o le a amata ona uiga ese, e le tali atu i poloaiga, e le mafai ona tatala le faila, ma isi.

Ina ia iloa le mea moni o se liki, matou te faʻaogaina se suʻesuʻega manatua (e taʻua mulimuli ane o le suʻega). E mafai lava valgrind (lelei se tusiga e uiga i ai) poʻo fausia i totonu o le faʻapipiʻi gcc MemorySanitizer po o se isi mea. Afai e faʻaalia e le au suʻesuʻe o le leak e tupu i se tasi o kalafi filiga, o lona uiga ua oʻo i le taimi e faʻaoga ai se tasi o metotia o loʻo faʻamatalaina i lalo.

Tolu Pine Metotia

E pei ona taʻua i luga, i le tulaga o se mea e manatua, o le a faasino atu le tagata suʻesuʻe i le faamama na manaʻomia ai le vaevaega manatua mai le faaputuga. Ae o le a le faasino atu i le faamama e "galo" e toe faafoi, lea, o le mea moni, e tuuaia. O le mea lea, e mafai e le tagata suʻesuʻe ona faʻamaonia o tatou popolega, ae le faʻasino i latou aʻa.

Ina ia iloa le nofoaga o le "leaga" faamama i le kalafi, e mafai ona e alu e ala i le faʻaitiitia o le kalafi i le numera aupito maualalo o nodes lea e iloa ai e le tagata suʻesuʻe se liki ma suʻe le faʻafitauli faʻafitauli i isi paina e tolu.

Ae atonu e tupu e ala i le faʻaitiitia o le numera o filiga i le koluma o le ae faʻalavelaveina le masani masani o fegalegaleaiga i le va o filiga ma isi elemene o lau masini ma o le a le toe aliali mai le leki. I lenei tulaga, e tatau ona e galue ma se kalafi atoa ma faʻaaoga le auala o loʻo faʻamatalaina i lalo.

Metotia insulator fa'ase'e

Mo le faigofie o le faʻaaliga, matou te faʻaogaina se kalafi e aofia ai se filifili se tasi o filiga. O loʻo faʻaalia o ia i le ata.

Su'esu'e le afi Mediastreamer2 VoIP. Vaega 12

O se kalafi masani, lea, fa'atasi ai ma filiga fa'asalalau fa'asalalau ua uma ona fai, fa'atauga fa'atau F1…F4 o lo'o fa'aogaina, fa ituaiga eseese na e faia i se taimi ua leva ma e leai se masalosalo i lo latou sa'o. Ae ui i lea, faʻapea o nisi oi latou o loʻo i ai se mea e manatua ai. Pe a faʻatautaia la matou polokalame suʻesuʻe suʻesuʻe, matou te aʻoaʻoina mai lana lipoti o se faamama patino na manaʻomia se aofaʻi o manatuaga ma e leʻi toe faʻafoʻi atu i le faaputuga N taimi. E faigofie ona mateina o le ai ai se faʻamatalaga i galuega faamama totonu o le ituaiga MS_VOID_SOURCE. O lana galuega o le aveesea lea o manatuaga mai le faaputuga. O isi filiga e tatau ona toe faafoi iina. O na. o le a tatou maua le liki.

Ina ia mafai ona iloa po o le a le vaega o le paipa ua le gaoioi na tupu na mafua ai le le mautonu, ua fautuaina e faʻafeiloaʻi se faamama faaopoopo e naʻo le suia o feʻau mai le faʻaoga i le gaosiga, ae i le taimi lava e tasi e fatuina ai se kopi le malamalama o le faʻaoga. savali i se kopi masani "mamafa", ona tape atoa lea o le savali na taunuu i le faitotoa. O le a matou taʻua sea faamama o se insulator. Matou te talitonu talu ai ona e faigofie le faamama, e le o aofia ai le tafe i totonu. Ma le isi mea lelei e tasi - afai tatou te faʻaopoopoina i soʻo se nofoaga i la tatou kalafi, o le a le afaina ai le gaioiga o le matagaluega i soo se auala. O le a matou faʻaalia le faamama insulator e pei o se liʻo faʻatasi ma se faʻailoga lua.

Fa'aaga le isolator pe a uma le voidsourse faamama:
Su'esu'e le afi Mediastreamer2 VoIP. Vaega 12

Matou te toe faʻatautaia le polokalama ma le suʻega, ma matou vaʻai i le taimi nei, o le a tuʻuina atu e le suʻega le tuʻuaʻiga i luga o le faʻaesea. A uma mea uma, o ia lea o loʻo faia nei poloka o faʻamaumauga, lea e leiloa e se faamama faʻatamala le iloa (poʻo filiga). O le isi laasaga o le suiina lea o le insulator i luga o le filifili i le itu taumatau, i le tasi faamama, ma toe amata le auiliiliga. O lea la, i lea laasaga ma lea laasaga, siitia le isolator i le itu taumatau, tatou te maua se tulaga pe a faaitiitia le numera o poloka manatua "leaked" i le isi lipoti o le auiliiliga. O lona uiga o le laasaga lea na iu ai le insulator i le filifili i le taimi lava na maeʻa ai le faamama faʻafitauli. Afai e na'o le tasi le "leaga" faamama, ona mou atu lea o le liki. O le mea lea, matou te vaʻaia le faʻafitauli faʻafitauli (poʻo se tasi o le tele). A mae'a ona "fa'amau" le faamama, e mafai ona fa'aauau pea ona fa'agasolo le fa'aesea i le itu taumatau i luga o le filifili se'ia o'o ina fa'a'a'a'a'ese atoatoa le gaogao manatua.

Fa'atinoina o se faamama fa'amama

O le fa'atinoina o le isolator e pei lava o se faamama masani. Ulutala faila:

/* Файл iso_filter.h  Описание изолирующего фильтра. */

#ifndef iso_filter_h
#define iso_filter_h

/* Задаем идентификатор фильтра. */
#include <mediastreamer2/msfilter.h>

#define MY_ISO_FILTER_ID 1024

extern MSFilterDesc iso_filter_desc;

#endif

Ole faamama lava ia:

/* Файл iso_filter.c  Описание изолирующего фильтра. */

#include "iso_filter.h"

    static void
iso_init (MSFilter * f)
{
}
    static void
iso_uninit (MSFilter * f)
{
}

    static void
iso_process (MSFilter * f)
{
    mblk_t *im;

    while ((im = ms_queue_get (f->inputs[0])) != NULL)
    {
        ms_queue_put (f->outputs[0], copymsg (im));
        freemsg (im);
    }
}

static MSFilterMethod iso_methods[] = {
    {0, NULL}
};

MSFilterDesc iso_filter_desc = {
    MY_ISO_FILTER_ID,
    "iso_filter",
    "A filter that reads from input and copy to its output.",
    MS_FILTER_OTHER,
    NULL,
    1,
    1,
    iso_init,
    NULL,
    iso_process,
    NULL,
    iso_uninit,
    iso_methods
};

MS_FILTER_DESC_EXPORT (iso_desc)

Metotia e sui ai galuega tau pulega manatua

Mo nisi suʻesuʻega faʻapitoa, o le faʻasalalauga faʻasalalau e maua ai le gafatia e sui ai galuega faʻaoga manatua ma oe lava, lea, i le faaopoopo atu i le galuega autu, o le a faʻapipiʻi "O ai, o fea ma pe aisea." E tolu galuega o loo suia. E faia lenei mea i le auala lenei:

OrtpMemoryFunctions reserv;
OrtpMemoryFunctions my;

reserv.malloc_fun = ortp_malloc;
reserv.realloc_fun = ortp_realloc;
reserv.free_fun = ortp_free;

my.malloc_fun = &my_malloc;
my.realloc_fun = &my_realloc;
my.free_fun = &my_free;

ortp_set_memory_functions(&my);

O lenei vaega e oʻo mai i le laveaʻiina i mataupu pe a faʻagesegese le suʻesuʻe i lalo o le filiga e faʻalavelave tele ai le faʻaogaina o le faiga o loʻo fausia ai la tatou matagaluega. I se tulaga faapena, e tatau ona e lafoaʻia le suʻega ma faʻaaoga le sui o galuega manatua.

Ua matou iloiloina se algorithm o gaioiga mo se kalafi faigofie e leai ni lala. Ae o lenei auala e mafai ona faʻaoga i isi mataupu, ioe ma faʻalavelave, ae o le manatu e tumau pea.

I le isi tala, o le a tatou vaʻavaʻai i le mataupu o le fua faʻatatau o uta ma pe faʻafefea ona faʻafetaui le tele o uta komepiuta i totonu o le aufaasālalau.

puna: www.habr.com

Faaopoopo i ai se faamatalaga